Por que isso é IgnoreRoute chamada correspondentes a estes pedidos?
-
12-12-2019 - |
Pergunta
Eu tenho uma localização httphandler o que está sendo executado no contexto de minha ASP.Net MVC2 pasta de Conteúdo (parte do que ele está fazendo está compilando .menos arquivos que estão em /Content/css).Minha rota padrão para esse determinado conjunto de solicitações parecido com este:
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 um aparte, eu não acho que é relevante, mas apenas no caso - o VirtualDirectoryConstraint rejeita partidas nesta rota, se o pedido não está vindo do passado-no caminho do aplicativo/diretório virtual)
Com esta configuração de uma chamada para http://server.net/VDirectory1/Content/css/LessCompiler.axd
falha porque não há ContentController classe.Tudo muito bem.
Quando eu adicionar
context.Routes.IgnoreRoute("{Content}/{*pathInfo}");
que a chamada for bem-sucedida, mas as chamadas subsequentes para
http://server.net/VDirectory1/Localization/ClientScript/en-US.js
e
http://server.net/VDirectory1/Authorization/ClientScript
falhar.Olhando para Phil Haack o RouteDebugger ferramenta, essas chamadas são de correspondência de Conteúdo IgnoreRoute rota:
True {Content}/{*pathInfo} (null) (null) (null)
e não são, portanto, ser encaminhado para o LocalizationController e AuthorizationController, respectivamente.
Claro que eu sou mal-entendido algo sobre como o IgnoreRoute é suposto para ser usado e por que determinado IgnoreRoute é correspondente a essas solicitações.O que eu estou ausente?
Solução
Não deve o seu IgnoreRoute uso Content
em vez de {Content}
?
context.Routes.IgnoreRoute("Content/{*pathInfo}");
No momento, {Content}
é, provavelmente, ser expandida como uma variável para nada, o que torna o pathinfo combinar tudo.