在SharePoint 2007中使用ASP.Net 3.5 SP1路由
-
02-07-2019 - |
题
我正在尝试在SharePoint网站上设置一些友好的URL。我知道我可以使用RewritePath执行ASP.Net 2.0友好URL,但我想知道是否可以使用ASP.NET 3.5 SP1附带的System.Web.Routing。
我想我已经弄明白了如何加载我的路由表,但我不清楚使用什么方法来传递正确的IHttpHandler。
谢谢!
解决方案
我最终接受了Ryan的所作所为:
var route = new Route("blah/{*path}", new MyRouteHandler());
RouteTable.Routes.Add(route);
public class MyRouteHandler : IRouteHandler
{
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
//rewrite to some know sharepoint path
HttpContext.Current.RewritePath("~/Pages/Default.aspx");
// return some HTTP handler here
return new DefaultHttpHandler();
}}
这似乎对我有用。
其他提示
我被要求将此视为Share Point评估过程的一部分。
我的理解是 uri模板本质上是主机名,后跟递归文件夹结构。
Share Point截断uri为255个字符,这进一步复杂化了。因此,如果你有一个特别深刻或冗长的文件夹结构,那么你的uri就会变得无效。
我正在考虑通过遵循人类可读的约定并转换为Share Point约定来基本上美化/整理uri。即:
http://myhostname.com /docs/human-resources/case-files/2009/reviews/ed-blackburn.docx
转换为分享点:
http://myhostname.com/human %20resources /壳体%20files / 2009 /评论/ ED%20blackburn.docx
控制器可以控制任何其他所需服务。
如果长度超过255个字符,那么我的初步建议就是某种微小的方法。
它应该像下面一样简单。
var route = new Route("blah/{*path}", new MyRouteHandler());
RouteTable.Routes.Add(route);
public class MyRouteHandler : IRouteHandler
{
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
// return some HTTP handler here
}
}
然后在web.config中的HTTP模块下注册System.Web.Routing.UrlRoutingModule,你应该很高兴。
<add name="Routing" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
不隶属于 StackOverflow