In MVC 3 hatte ich kein Problem, aber jetzt habe ich zu MVC 4 Ich mache.ASP.NET MVC 4 Routing funktioniert nicht, wenn die ID eine Dateierweiterung hat
Die URL sah wie folgt aus:
{controller}/{action}/{id}
/podcast/file/PODCAST-01.MP4
Wo die PODCAST-01.MP4 ist die ID; Wenn es den Controller trifft, würde der Controller die Datei dann an den Client senden, so dass wir leicht zählen können, wie viele Leute die Datei heruntergeladen haben.
Allerdings denkt der Webserver, dass dort eine Datei sein sollte und gibt einen 404 Fehler. Ich habe versucht, dies zu umgehen, indem ich meine eigene 404-Fehlerseite mache und dann mit /podcast/file?id=PODCAST-01.MP4 zurückleite, aber das funktioniert nicht, weil iTunes es nicht mag, es mag es nicht das "?".
Ich habe versucht, eine neue Route zu erstellen:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}.{format}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional, format = UrlParameter.Optional });
Aber das scheint das Routing nur gebrochen zu haben. Jede Hilfe wäre großartig.
Wenn Sie sagen, es bricht das Routing muss hinzufügen, was passiert? Es sieht auf den ersten Blick korrekt aus. – Billdr
Ich erhalte diesen Fehler, wenn ich auf eine Seite gehe: "HTTP Error 403.14 - Forbidden Der Webserver ist so konfiguriert, dass er den Inhalt dieses Verzeichnisses nicht auflistet." wenn ich die RouteConfig.cs ändere –
Wie wäre es mit dem Hinzufügen eines "Constraints" Abschnitt, der explizit definiert, was ein Dateiname haben sollte (und nicht haben)? (Es gab in der Vergangenheit auch Probleme mit [aufeinanderfolgenden optionalen Parametern] (http://haacked.com/archive/2011/02/20/routing-regression-with-two-consecutive-optional-url-parameters.aspx)) –