O que é routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
Não consigo encontrar nenhum arquivo .axd em meu projeto, posso remover esta regra de rota?
asp.net-mvc
asp.net-mvc-3
asp.net-mvc-routing
Eric Yin
fonte
fonte
IgnoreRoute
na configuração de roteamento do MVC é garantir que o MVC não tente lidar com a solicitação. Isso ocorre porque os.axd
terminais precisam ser manipulados por outro manipulador HTTP (um manipulador que não faz parte do MVC) para servir scripts.Alguns Antecedentes
Se você abrir este arquivo:
você encontrará isso no arquivo:
Isso basicamente diz ao tempo de execução do Asp.NET: "Ei, cara do asp.net, se uma solicitação vier para WebResource.axd, use AssemblyResourceLoader para processar a solicitação."
Por favor, nota que WebResource.axd não é um arquivo , mas simplesmente um mapa (se assim posso dizer) para
AssemblyResourceLoader
. É o nome com o qual o manipulador está registrado. Em minha máquina, encontrei os seguintes manipuladores .axd:Ok, então o que esse manipulador faz?
O
AssemblyResourceLoader
sabe como procurar arquivos embutidos dentro de um assembly para que possa servi-lo (enviá-lo ao cliente, ou seja, um navegador). Por exemplo, em formulários da web do asp.net, se você usar os controles de validação, eles dependem de algum javascript para mostrar os erros na página da web. No entanto, esse javascript está embutido em uma montagem. O navegador precisa do javascript, então você verá isso no html da página:O
AssemblyResourceLoader
irá encontrar o assembly onde o javascript está embutido usando as informações na querystring e retornar o javascript.Voltar para a pergunta
Então, para responder à pergunta, o que é:
Isso diz ao mecanismo de roteamento que não processaremos as solicitações que correspondem a esse padrão de rota. Em outras palavras, não processaremos
.axd
solicitações. Por quê? Porque o próprio MVC é um HttpHandler semelhante a.axd
e.aspx
e muitos outros manipuladores que estão no arquivo web.config. O manipulador MVC não sabe como processar a solicitação, como procurar recursos incorporados em um assembly - eleAssemblyResourceLoader
sabe como fazer isso. MVC sabe fazer, bem, tudo o que faz que está além do escopo desta pergunta e resposta.fonte
A rota com o padrão {resource} .axd / {* pathInfo} é incluída para evitar que as solicitações dos arquivos de recursos da Web, como WebResource.axd ou ScriptResource.axd, sejam passadas para um controlador.
Leia o link: http://msdn.microsoft.com/en-us/library/cc668201%28v=vs.100%29.aspx
fonte
Dê uma olhada no link abaixo: http://haacked.com/archive/2008/07/14/make-routing-ignore-requests-for-a-file-extension.aspx
fonte
Esses não são arquivos (eles não existem no disco) - são apenas nomes sob os quais alguns gerenciadores de HTTP são registrados.
fonte