Использование маршрутизации ASP.Net 3.5 SP1 с SharePoint 2007
-
02-07-2019 - |
Вопрос
Я пытаюсь настроить несколько удобных URL-адресов на веб-сайте SharePoint.Я знаю, что могу создавать дружественные URL-адреса ASP.Net 2.0 с помощью RewritePath, но мне было интересно, можно ли использовать System.Web.Routing, который поставляется с ASP.NET 3.5 SP1.
Кажется, я понял, как загрузить мою таблицу маршрутов, но я не понимаю, какой метод использовать, чтобы передать правильный 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();
}}
Кажется, у меня это работает нормально.
Другие советы
Меня попросили рассмотреть это как часть процесса оценки Share Point.
Насколько я понимаю, шаблон URI по сути, это имя хоста, за которым следует рекурсивная структура папок.
Это еще больше усложняется тем, что Share Point усекает URI до 255 символов.Поэтому, если у вас особенно глубокая или многословная структура папок, ваш URI может стать недействительным.
Я думал о том, чтобы существенно улучшить/привести в порядок URI, следуя удобочитаемому соглашению и преобразуя его в соглашение Share Point.то есть:
http://myhostname.com/docs/human-resources/case-files/2009/reviews/ed-blackburn.docx
конвертируется в баллы Share:
http://myhostname.com/human%20resources/case%20files/2009/reviews/ed%20blackburn.docx
Любые дополнительные необходимые услуги могут контролироваться контроллером.
Если длина превышает 255 символов, моим первоначальным предложением будет какой-то подход tinyurl.
Это должно быть так же просто, как показано ниже.
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
}
}
Затем зарегистрируйте System.Web.Routing.UrlRoutingModule в разделе HTTP-модули в web.config, и все готово.
<add name="Routing" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>