So habe ich eine Strecke wie diese in meiner MVC 3-Anwendung unter IIS 7:MVC Routing, wenn eine Datei existiert tatsächlich an der angegebenen Stelle
routes.MapRoute(
"VirtualTourConfig",
"virtualtour/config.xml",
new { controller = "VirtualTour", action = "Config" }
);
Der Trick besteht darin, dass eine Datei tatsächlich existiert bei/Virtual/Konfig.xml. Es scheint, als ob die Anfrage nur die XML-Datei an diesem Ort zurückgibt, anstatt die Route zu treffen, die das XML verarbeitet, einige Änderungen vornimmt und ein benutzerdefiniertes XmlResult zurückgibt.
Irgendwelche Vorschläge, wie ich meiner Anwendung sagen kann, die Route zu treffen und nicht die eigentliche Datei für den Fall, dass die Datei auf der Festplatte existiert?
EDIT: Es scheint, dass ich routes.RouteExistingFiles = true;
im RegisterRoutes Methode der Global.asax der Anwendung sagen, können Sie Dateien auf der Festplatte zu ignorieren. Dies setzt jedoch das Flag global und bricht viele andere Anforderungen innerhalb der Anwendung. Zum Beispiel möchte ich immer noch Aufrufe von /assets/css/site.css, um die CSS-Datei zurückzugeben, ohne Routen für jedes statische Asset spezifisch festlegen zu müssen. Jetzt stellt sich die Frage: Gibt es eine Möglichkeit, dies pro Strecke zu tun?
Ich glaube nicht, dass es eine einfache Möglichkeit, dies zu erreichen. Warum verschiebst du die statische Datei nicht einfach in den Ordner "~/App_Data"? –