Question

J'ai un httphandler de localisation qui s'exécute dans le contexte de mon dossier de contenu ASP.Net MVC2 (une partie de ce qu'il fait consiste à compiler les fichiers .less qui se trouvent dans /Content/css).Mon itinéraire par défaut pour cet ensemble particulier de requêtes ressemble à ceci :

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" }
);

(En passant - je ne pense pas que ce soit pertinent, mais juste au cas où - VirtualDirectoryConstraint rejette les correspondances sur cette route si la demande ne provient pas du chemin d'application/répertoire virtuel transmis)

Avec cette configuration un appel à http://server.net/VDirectory1/Content/css/LessCompiler.axd échoue car il n’y a pas de classe ContentController.Tout va bien.

Quand j'ajoute

context.Routes.IgnoreRoute("{Content}/{*pathInfo}");

cet appel réussit, mais les appels suivants à

http://server.net/VDirectory1/Localization/ClientScript/en-US.js

et

http://server.net/VDirectory1/Authorization/ClientScript

échouer.En regardant l'outil RouteDebugger de Phil Haack, ces appels correspondent à la route Content IgnoreRoute :

True    {Content}/{*pathInfo}   (null)  (null)  (null)

et ne sont donc pas acheminés vers LocalizationController et AuthorizationController, respectivement.

De toute évidence, je ne comprends pas bien la façon dont IgnoreRoute est censé être utilisé et pourquoi cet IgnoreRoute particulier correspond à ces demandes.Qu'est-ce que je rate?

Était-ce utile?

La solution

Votre IgnoreRoute ne devrait-il pas utiliser Content au lieu de {Content} ?

context.Routes.IgnoreRoute("Content/{*pathInfo}");

À l'heure actuelle, {Content} est probablement étendu en tant que variable à rien, ce qui fait que les informations de chemin correspondent à tout.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top