2009-06-22 10 views
8

Betrachten Sie die folgende Route:Warum ignoriert ASP.NET MVC meinen abschließenden Schrägstrich?

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

Mit Url.Action("Service", "CustomerService")/service/

Gibt es eine URL von /service statt der erwarteten erzeugt eine Möglichkeit, dies, zur Arbeit zu kommen oder muss ich meine eigene greifen müssen zur Umsetzung Routing abgeleitet von RouteBase?

+3

Darf ich fragen, warum diese ist wichtig? Was Browser angeht, ist es ihnen egal. Und soweit Sie Ihre eigenen Routen-URLs basierend auf dieser Route erstellen, wird das Trailing/bei Bedarf automatisch hinzugefügt. –

+0

Ich möchte nur meine URLs konsistent mit einer älteren Version der Website, die URLs mit einem abschließenden Schrägstrich verwendet. Ich weiß in der Theorie, dass es egal ist, aber für das Erbe tut es. :) – andreialecu

+1

Dennoch gibt es wirklich keinen Grund zu stören - auch für Legacy. Wenn nur der Schrägstrich abweicht, gibt es keinen Unterschied. Alle alten URLs sind gültig und alle neuen URLs funktionieren mit den alten Adressen. –

Antwort

4

Legenden - es gibt keine sofortige Lösung für das Problem. Sie haben möglicherweise über Jason Young's blog post über das Problem gelaufen, das sehr informativ ist. Scott Hanselmann posted a reply hier, im Grunde, dass er nicht dachte, es war eine große Sache, und wenn es ist, können Sie das neue IIS7 Rewrite-Modul nutzen, um es zu lösen.

Letztlich aber, könnte man zu einer Lösung suchen möchten, die von Murad auf eine ähnliche Frage auf Stackoverflow gepostet: Trailing slash on an ASP.NET MVC route

-5

In Ihrer Seite Load-Ereignis hinzu:

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

Das war nicht, worum die Frage ging, plus, es gibt kein Ereignis zum Laden der Seite in mvc. – andreialecu

Verwandte Themen