我想在SharePoint网站上设置一些友好的URL。我知道我可以使用RewritePath来实现ASP.Net 2.0友好的URL,但我想知道是否可以使用ASP.NET 3.5 SP1附带的System.Web.Routing。使用ASP.Net 3.5 SP1路由与SharePoint 2007
我想我已经想出了如何让我的路由表加载,但我不清楚使用什么方法来获得正确的IHttpHandler传出。
谢谢!
我想在SharePoint网站上设置一些友好的URL。我知道我可以使用RewritePath来实现ASP.Net 2.0友好的URL,但我想知道是否可以使用ASP.NET 3.5 SP1附带的System.Web.Routing。使用ASP.Net 3.5 SP1路由与SharePoint 2007
我想我已经想出了如何让我的路由表加载,但我不清楚使用什么方法来获得正确的IHttpHandler传出。
谢谢!
我最终采取了瑞恩什么:
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();
}}
这似乎为我工作正常。
它应该像下面一样简单。
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"/>
我被要求将此作为共享点评估过程的一部分。
我的理解是,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方法将是我最初的建议。
嗨,瑞安,很高兴见到你。这是很容易的部分。困难的部分是找出什么Http处理程序返回。 – Bryant 2008-09-24 16:14:56
有没有人找到一种方法来返回将与SharePoint一起工作的HTTPHandler? – 2009-07-03 00:32:23