Usando ASP.Net 3.5 SP1 Routing com SharePoint 2007
-
02-07-2019 - |
Pergunta
Eu estou tentando configurar alguns URLs amigáveis ??em um site SharePoint. Eu sei que eu posso fazer as URLs amigáveis ??ASP.Net 2.0 usando RewritePath, mas eu queria saber se era possível fazer uso do System.Web.Routing que vem com ASP.NET 3.5 SP1.
Eu acho que eu descobri como obter minha mesa rota carregada, mas eu não sou claro sobre o método a utilizar para obter o IHttpHandler correta para passar para fora.
Obrigado!
Solução
acabei tomando o que Ryan tinha:
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();
}}
Isso parece ok trabalho para mim.
Outras dicas
Eu fui convidado a olhar para isso como parte de um processo de avaliação Share Point.
O meu entendimento é que o uri template é essencialmente nome do host seguido pela estrutura de pastas recursiva.
Isto é ainda mais complicada pela Share Point truncando o uri em 255 caracteres. Então, se você tem um particularmente profundo ou detalhado estrutura da pasta, em seguida, seus uri pode se tornar inválido.
Eu estava pensando sobre essencialmente embelezar / arrumar a uri por seguir uma convenção legível e converter para a convenção Share Point. ou seja:
http://myhostname.com /docs/human-resources/case-files/2009/reviews/ed-blackburn.docx
convertidos para compartilhar Pontos:
Todos os serviços necessários adicionais podem ser controlados pelo controlador.
Se mais de 255 caracteres algum tipo de abordagem tinyurl seria minha sugestão inicial.
Deve ser tão fácil como o abaixo.
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
}
}
Em seguida, registrar System.Web.Routing.UrlRoutingModule sob HTTP módulos em web.config e você deve ser bom para ir.
<add name="Routing" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>