Pourquoi ASP.NET MVC ignore-t-il ma barre oblique finale?
-
06-07-2019 - |
Question
Considérez l'itinéraire suivant:
routes.MapRoute(
"Service", // Route name
"service/", // URL with parameters
new {controller = "CustomerService", action = "Index"} // Parameter defaults
);
L'utilisation de Url.Action ("Service", "CustomerService")
génère une URL de / service
au lieu du / service /
Existe-t-il un moyen de résoudre ce problème ou dois-je recourir à la mise en œuvre de mon propre routage dérivé de RouteBase
?
La solution
Légende - il n’ya pas de solution immédiate au problème. Vous avez peut-être rencontré le blog de Jason Young à propos de la question, qui est très informatif. Scott Hanselmann a posté une réponse à cette question , affirmant en substance qu'il ne le pensait pas. C’était un gros problème, et si c’est le cas, vous pouvez utiliser le nouveau module de réécriture IIS7 pour le résoudre.
En fin de compte, vous voudrez peut-être examiner une solution publiée par murad sur une question similaire sur StackOverflow: Trait de barre oblique sur une route ASP.NET MVC
Autres conseils
Dans votre événement de chargement de page, ajoutez:
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