Quel est routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
Je ne trouve aucun fichier .axd dans mon projet, puis-je supprimer cette règle d'itinéraire?
Quel est routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
Je ne trouve aucun fichier .axd dans mon projet, puis-je supprimer cette règle d'itinéraire?
Les fichiers .axd n'existent pas physiquement. ASP.NET utilise des URL avec des extensions .axd (ScriptResource.axd et WebResource.axd) en interne, et elles sont gérées par un HttpHandler.
Par conséquent, vous devez conserver cette règle pour empêcher ASP.NET MVC d'essayer de gérer la demande au lieu de laisser le HttpHandler dédié le faire.
IgnoreRoute
dans la configuration de routage de MVC est de s'assurer que MVC n'essaye pas de gérer la demande. En effet, les.axd
points de terminaison doivent être gérés par un autre gestionnaire HTTP (un gestionnaire qui ne fait pas partie de MVC) afin de servir les scripts.Quelques Contexte
Si vous ouvrez ce fichier:
vous trouverez ceci dans le fichier:
C'est essentiellement dire au runtime Asp.NET: "Hey mec asp.net, si une demande vient pour WebResource.axd alors utilisez AssemblyResourceLoader pour traiter la demande."
Veuillez noter que WebResource.axd n'est PAS un fichier mais simplement une carte (si je puis dire) vers
AssemblyResourceLoader
. C'est le nom sous lequel le gestionnaire est enregistré. Sur ma machine, j'ai trouvé les gestionnaires .axd suivants:Ok, alors que fait ce gestionnaire?
Le
AssemblyResourceLoader
sait comment rechercher des fichiers incorporés dans un assemblage afin qu'il puisse le servir (l'envoyer au client c'est-à-dire un navigateur). Par exemple, dans les formulaires Web asp.net, si vous utilisez les contrôles de validation, ils dépendent de certains javascript pour afficher les erreurs sur la page Web. Cependant, ce javascript est intégré dans un assembly. Le navigateur a besoin du javascript donc vous verrez ceci dans le html de la page:Le
AssemblyResourceLoader
trouvera l'assembly dans lequel le javascript est incorporé en utilisant les informations de la chaîne de requête et retournera le javascript.Retour à la question
Alors pour répondre à la question, qu'est-ce que c'est:
Cela indique au moteur de routage que nous ne traiterons pas les demandes qui correspondent à ce modèle d'itinéraire. En d'autres termes, nous ne traiterons pas les
.axd
demandes. Pourquoi? Parce que MVC lui-même est un HttpHandler similaire à.axd
and.aspx
et à de nombreux autres gestionnaires qui se trouvent dans le fichier web.config. Le gestionnaire MVC ne sait pas comment traiter la demande, comme la recherche de ressources incorporées dans un assembly, ilAssemblyResourceLoader
sait comment le faire. MVC sait faire, bien tout ce qu'il fait qui dépasse le cadre de cette question et réponse.la source
La route avec le modèle {resource} .axd / {* pathInfo} est incluse pour empêcher les requêtes des fichiers de ressources Web tels que WebResource.axd ou ScriptResource.axd d'être transmises à un contrôleur.
Lire le lien: http://msdn.microsoft.com/en-us/library/cc668201%28v=vs.100%29.aspx
la source
Jetez un œil au lien ci-dessous: http://haacked.com/archive/2008/07/14/make-routing-ignore-requests-for-a-file-extension.aspx
la source
Ce ne sont pas des fichiers (ils n'existent pas sur le disque) - ce ne sont que des noms sous lesquels certains gestionnaires HTTP sont enregistrés.
la source