我正在尝试在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"/>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top