Pregunta

Estoy intentando configurar algunas URL amigables en un sitio web de SharePoint.Sé que puedo crear las URL compatibles con ASP.Net 2.0 usando RewritePath, pero me preguntaba si era posible utilizar System.Web.Routing que viene con ASP.NET 3.5 SP1.

Creo que he descubierto cómo cargar mi tabla de rutas, pero no tengo claro qué método usar para obtener el IHttpHandler correcto.

¡Gracias!

¿Fue útil?

Solución

Terminé tomando lo que tenía Ryan:

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();  

}}

Eso parece funcionar bien para mí.

Otros consejos

Me pidieron que analizara esto como parte de un proceso de evaluación de Share Point.

Mi entendimiento es que el plantilla de uri es esencialmente el nombre del host seguido de la estructura de carpetas recursiva.

Esto se complica aún más porque Share Point trunca el uri a 255 caracteres.Entonces, si tiene una estructura de carpetas particularmente profunda o detallada, su uri puede dejar de ser válido.

Estaba pensando esencialmente en embellecer/ordenar el uri siguiendo una convención legible por humanos y convertirlo a la convención de Share Point.es decir:

http://myhostname.com/docs/human-resources/case-files/2009/reviews/ed-blackburn.docx

se convierte en puntos compartidos:

http://myhostname.com/human%20resources/case%20files/2009/reviews/ed%20blackburn.docx

Cualquier servicio adicional requerido puede ser controlado por el controlador.

Si tiene más de 255 caracteres, mi sugerencia inicial sería algún tipo de enfoque de tinyurl.

Debería ser tan fácil como el siguiente.

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
    }
}

Luego registre System.Web.Routing.UrlRoutingModule en los módulos HTTP en web.config y estará listo para comenzar.

<add name="Routing" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top