2009-06-22 4 views
8

Tenir compte de l'itinéraire suivant:Pourquoi ASP.NET MVC ignore-t-il mon slash final?

routes.MapRoute(
     "Service", // Route name 
     "service/", // URL with parameters 
     new {controller = "CustomerService", action = "Index"} // Parameter defaults 
     ); 

L'utilisation Url.Action("Service", "CustomerService") produit une URL de /service au lieu de l'attendre /service/

Est-il possible d'obtenir ce travail, ou dois-je recourir à mettre en œuvre ma propre routage dérivant de RouteBase?

+3

Puis-je demander pourquoi est important? En ce qui concerne les navigateurs, ils s'en fichent. Et en ce qui concerne la construction de vos propres routes basées sur cette route, la fin sera ajoutée automatiquement si nécessaire. –

+0

Je veux juste garder mes URL cohérentes avec une ancienne version du site qui utilisait des URLs avec une barre oblique. Je sais en théorie que cela n'a pas d'importance, mais pour l'héritage, c'est le cas. :) – andreialecu

+1

Pourtant, il n'y a vraiment aucune raison de déranger - même pour l'héritage. Si le slash final est tout ce qui diffère, il n'y a pas de différence. Toutes les anciennes urls seront valides, et toutes les nouvelles urls fonctionneront avec les anciens emplacements. –

Répondre

4

Légende - il n'y a pas de solution immédiate au problème. Vous avez peut-être rencontré Jason Young's blog post à propos du problème, ce qui est très instructif. Ici, en disant qu'il ne pensait pas que c'était un gros problème, et si c'est le cas, vous pouvez tirer parti du nouveau module de réécriture IIS7 pour le résoudre.

En fin de compte, vous pouvez regarder une solution qui a été posté par Murad sur une question similaire sur StackOverflow: Trailing slash on an ASP.NET MVC route

-5

Dans votre cas de chargement de la page ajouter:

Dim rawUrl As String = HttpContext.Current.ApplicationInstance.Request.RawUrl 
If Not rawUrl.EndsWith("/") Then 
    HttpContext.Current.ApplicationInstance.Response.RedirectPermanent(String.Format("~{0}/", rawUrl)) 
End If 
+5

Ce n'était pas la question, en plus, il n'y a pas d'événement de chargement de page en mvc. – andreialecu

Questions connexes