Использование ASP.Net 3.5 SP1 Routing с SharePoint 2007 - PullRequest
2 голосов
/ 23 сентября 2008

Я пытаюсь настроить дружественные URL-адреса на веб-сайте SharePoint. Я знаю, что могу создавать дружественные для ASP.Net 2.0 URL-адреса с помощью RewritePath, но мне было интересно, можно ли использовать System.Web.Routing, поставляемый с ASP.NET 3.5 SP1.

Я думаю, что выяснил, как загрузить свою таблицу маршрутов, но мне не ясно, какой метод использовать, чтобы получить правильный IHttpHandler для раздачи.

Спасибо!

Ответы [ 3 ]

1 голос
/ 06 января 2009

Меня попросили рассмотреть это как часть процесса оценки Share Point.

Насколько я понимаю, шаблон uri - это имя хоста, за которым следует рекурсивная структура папок.

Это еще более усложняется тем, что Share Point усекает uri до 255 символов. Так что если у вас очень глубокая или многословная структура папок, то ваш URI может стать недействительным.

Я думал о том, чтобы существенно улучшить / привести в порядок URI, следуя понятному человеку соглашению и перейдя к соглашению Share Point. то есть:

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.

0 голосов
/ 04 июля 2009

В итоге я взял то, что имел Райан:

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 голосов
/ 24 сентября 2008

Это должно быть так просто, как показано ниже.

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"/>
...