Warum passt dieser IgnoreRoute-Aufruf zu diesen Anforderungen?
-
12-12-2019 - |
Frage
Ich habe einen Lokalisierungs-Httphandler, der im Kontext meines ausgeführt wird ASP.Net MVC2-Inhaltsordner (ein Teil dessen, was es tut, ist das Kompilieren.weniger Dateien, die sich in / Content / css befinden).Meine Standardroute für diesen bestimmten Satz von Anfragen sieht folgendermaßen aus:
context.Routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
context.MapRoute(
"Area_default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new { controller = new VirtualDirectoryConstraint("VDirectory1") },
new string[] { "Namespace.One.MVC" }
);
(Nebenbei bemerkt - ich denke nicht, dass es relevant ist, aber nur für den Fall - lehnt die VirtualDirectoryConstraint Übereinstimmungen auf dieser Route ab, wenn die Anforderung nicht aus dem übergebenen Anwendungspfad / virtuellen Verzeichnis stammt.)
Mit dieser Konfiguration wird ein Aufruf an http://server.net/VDirectory1/Content/css/LessCompiler.axd
schlägt fehl, weil keine ContentController-Klasse vorhanden ist.Alles schön und gut.
Wenn ich hinzufüge
context.Routes.IgnoreRoute("{Content}/{*pathInfo}");
dieser Aufruf ist erfolgreich, aber nachfolgende Aufrufe an
http://server.net/VDirectory1/Localization/ClientScript/en-US.js
und
http://server.net/VDirectory1/Authorization/ClientScript
Scheitern.Wenn Sie sich das RouteDebugger-Tool von Phil Haack ansehen, stimmen diese Aufrufe mit der Route Content IgnoreRoute überein:
True {Content}/{*pathInfo} (null) (null) (null)
und werden daher nicht an den LocalizationController bzw. AuthorizationController weitergeleitet.
Offensichtlich verstehe ich etwas falsch darüber, wie die IgnoreRoute verwendet werden soll und warum diese bestimmte IgnoreRoute diesen Anforderungen entspricht.Was verpasse ich?
Lösung
Sollte Ihre IgnoreRoute nicht verwenden Content
statt {Content}
?
context.Routes.IgnoreRoute("Content/{*pathInfo}");
Momentan, {Content}
wird wahrscheinlich als Variable auf nichts erweitert, wodurch die Pfadinfo mit allem übereinstimmt.