2008-09-23 89 views
2

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

我想我已经想出了如何让我的路由表加载,但我不清楚使用什么方法来获得正确的IHttpHandler传出。

谢谢!

回答

0

我最终采取了瑞恩什么:

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

}} 

这似乎为我工作正常。

0

它应该像下面一样简单。

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

嗨,瑞安,很高兴见到你。这是很容易的部分。困难的部分是找出什么Http处理程序返回。 – Bryant 2008-09-24 16:14:56

+0

有没有人找到一种方法来返回将与SharePoint一起工作的HTTPHandler? – 2009-07-03 00:32:23

1

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

我的理解是,uri模板本质上是主机名,后面是递归文件夹结构。

由于共享点截断了255个字符的uri,这样会更加复杂。所以如果你有一个特别深的或冗长的文件夹结构,那么你的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方法将是我最初的建议。