Question

J'essaie de configurer des URL conviviales sur un site Web SharePoint. Je sais que je peux créer les URL conviviales pour ASP.Net 2.0 avec RewritePath, mais je me demandais s’il était possible d’utiliser le System.Web.Routing fourni avec ASP.NET 3.5 SP1.

Je pense avoir trouvé le moyen de charger ma table de routage, mais je ne sais pas quelle méthode utiliser pour obtenir le bon IHttpHandler à perdre.

Merci!

Était-ce utile?

La solution

J'ai fini par prendre ce que Ryan avait:

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

}}

Cela semble fonctionner correctement pour moi.

Autres conseils

On m'a demandé d'examiner cette question dans le cadre d'un processus d'évaluation Share Point.

Je crois comprendre que le modèle uri est essentiellement un nom d’hôte suivi de la structure de dossiers récursive.

Cette situation est encore compliquée par le fait que Share Point tronque l’URI à 255 caractères. Donc, si vous avez une structure de dossiers particulièrement profonde ou prolixe, votre URI peut devenir invalide.

Je pensais essentiellement à assainir / nettoyer l’URI en suivant une convention lisible par l’homme et en me convertissant à la convention Share Point. c'est-à-dire:

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

convertit en points de partage:

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

Tous les services supplémentaires requis peuvent être contrôlés par le contrôleur.

Si ma taille dépasse 255 caractères, une première approche serait ma première suggestion.

Cela devrait être aussi simple que ci-dessous.

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

Enregistrez ensuite System.Web.Routing.UrlRoutingModule sous les modules HTTP dans web.config et vous devriez être prêt à partir.

<add name="Routing" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top