Domanda

Sto cercando di impostare alcuni URL intuitivi su un sito Web di SharePoint. So che posso fare gli URL compatibili con ASP.Net 2.0 usando RewritePath, ma mi chiedevo se fosse possibile utilizzare System.Web.Routing fornito con ASP.NET 3.5 SP1.

Penso di aver capito come caricare la mia tabella di route, ma non sono chiaro su quale metodo utilizzare per far passare IHttpHandler corretto.

Grazie!

È stato utile?

Soluzione

Ho finito per prendere ciò che Ryan aveva:

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

}}

Sembra funzionare bene per me.

Altri suggerimenti

Mi è stato chiesto di guardare questo come parte di un processo di valutazione di Share Point.

La mia comprensione è che il modello uri è essenzialmente il nome host seguito dalla struttura ricorsiva della cartella.

Ciò è ulteriormente complicato dal punto di condivisione che tronca l'uri con 255 caratteri. Quindi, se hai una struttura di cartelle particolarmente profonda o dettagliata, il tuo uri può diventare non valido.

Stavo pensando essenzialmente di preimpostare / riordinare l'uri seguendo una convenzione leggibile dall'uomo e convertendola alla convenzione di Share Point. cioè:

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

converte in punti di condivisione:

http://myhostname.com/human % 20resources / case% 20files / 2009 / recensioni / ndr% 20blackburn.docx

Qualsiasi servizio aggiuntivo richiesto può essere controllato dal controller.

Se più lungo di 255 caratteri una sorta di approccio tinyurl sarebbe il mio suggerimento iniziale.

Dovrebbe essere facile come il seguente.

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

Quindi registra System.Web.Routing.UrlRoutingModule sotto moduli HTTP in web.config e dovresti essere pronto per andare.

<add name="Routing" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top