Pregunta

Tengo una localización Httphandler que se está ejecutando en el contexto de mi carpeta de contenido ASP.NET MVC2 (parte de lo que está haciendo es compilar archivos sin demora en / contenido / CSS). Mi ruta predeterminada para este conjunto particular de solicitudes se ve así:

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

(como un lado - No creo que sea relevante, pero en caso de que los rechazos de VirtualDirectoryConstrain se coinciden en esta ruta si la solicitud no viene de la ruta de aplicación / directorio virtual pasada)

Con esta configuración, una llamada a http://server.net/VDirectory1/Content/css/LessCompiler.axd falla porque no hay una clase CONTENTCONTROLLER. Todo bien y bueno.

cuando agrego

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

esa llamada tiene éxito, pero las llamadas posteriores a

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

y

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

fallar. Mirando la herramienta Rutadedebugger de Phil Haack, esas llamadas están coincidiendo con la ruta del contenido de Ignoreroute:

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

y, por lo tanto, no se están enrutando al concontrolizador de localización y el controlador de autorización, respectivamente.

Claramente, estoy malentendido algo sobre cómo se supone que se debe usar la ignororía de la ignororía y por qué ese Ignoreroute en particular está coincidiendo con esas solicitudes. ¿Qué estoy perdiendo?

¿Fue útil?

Solución

¿No debería su ignorción de IGNOREROUTE use Content en lugar de {Content}?

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

En este momento, es probablemente {Content}, probablemente se está expandiendo como una variable a la nada, lo que hace que el pathinfo coincida con todo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top