Вопрос

Я пытаюсь настроить несколько удобных 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"/>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top