Frage

Ich versuche, einige freundliche URLs auf einer Sharepoint-Website einrichten. Ich weiß, dass ich die ASP.Net 2.0-freundliche URLs mit RewritePath tun kann, aber ich frage mich, ob es möglich war, die Verwendung des System.Web.Routing zu machen, die mit ASP.NET 3.5 SP1 kommt.

Ich glaube, ich habe herausgefunden, wie mein Weg Tisch geladen werden, aber ich bin mir nicht klar, auf welcher Methode die richtigen IHttpHandler passieren zu bekommen.

Danke!

War es hilfreich?

Lösung

ich am Ende zu nehmen, was Ryan hatte:

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

}}

Das scheint für mich in Ordnung zu arbeiten.

Andere Tipps

Ich bin gebeten worden, um diese im Rahmen eines Share Point Evaluierungsprozesses zu suchen.

Mein Verständnis ist, dass die uri template ist im Wesentlichen Name durch die rekursive Ordnerstruktur gefolgt von Host.

Dies wird durch Share Point Abschneiden der uri bei 255 Zeichen kompliziert. Wenn Sie also eine besonders tiefe oder ausführliche Ordnerstruktur haben, dann können Sie Ihre uri ungültig.

Ich dachte über im Wesentlichen Verhübsch-Schlechterung / die uri aufzuräumen durch einen Menschen lesbare Konvention folgen und auf die Freigabe Konvention umzusetzen. das heißt:

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

wandelt Punkte gemeinsam nutzen:

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

Alle zusätzlichen erforderlichen Dienste können durch den Controller gesteuert werden.

Wenn länger als 255 Zeichen eine Art tinyurl Ansatz wäre mein erster Vorschlag sein.

Es sollte so einfach wie das unten sein.

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

Dann registrieren System.Web.Routing.UrlRoutingModule unter HTTP-Module in web.config und Sie sollten gut gehen.

<add name="Routing" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top