2008-09-23 90 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方法將是我最初的建議。