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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top