代码之家  ›  专栏  ›  技术社区  ›  Bryant

将ASP.NET 3.5 SP1路由与SharePoint 2007一起使用

  •  2
  • Bryant  · 技术社区  · 16 年前

    我正在尝试在SharePoint网站上设置一些友好的URL。我知道我可以使用RewritePath来实现ASP.NET 2.0友好的URL,但是我想知道是否可以使用ASP.NET 3.5 SP1附带的System.Web.Routing。

    我想我已经知道了如何加载路由表,但是我不清楚使用什么方法来让正确的IHttphandler传递出去。

    谢谢!

    3 回复  |  直到 14 年前
        1
  •  0
  •   Daniel Pollard    15 年前

    我最终接受了赖安所拥有的:

    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();  
    
    }}
    

    这对我来说似乎没问题。

        2
  •  1
  •   Ed Blackburn    16 年前

    我被要求将此作为共享点评估过程的一部分。

    我的理解是 URI模板 基本上是主机名,后跟递归文件夹结构。

    由于共享点将URI截断为255个字符,这就更加复杂了。因此,如果您有一个特别深或详细的文件夹结构,那么您的URI可能会变得无效。

    我在考虑通过遵循一个人类可读的约定并转换为共享点约定来美化/整理URI。即:

    http://myhostname.com/docs/human-resources/case-files/2009/reviews/ed-blackburn.docx

    转换为共享点:

    http://myhostname.com/human%20resources/case%20files/2009/reviews/ed%20blackburn.docx

    任何额外的所需服务都可以由控制器控制。

    如果长度超过255个字符,我建议采用某种tinyurl方法。

        3
  •  0
  •   Ryan Olshan    16 年前

    它应该像下面那样简单。

    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"/>