Utilizzo del routing ASP.Net 3.5 SP1 con SharePoint 2007
-
02-07-2019 - |
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!
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:
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"/>