1

J'essaie de traiter à la fois les requêtes de pages ".aspx" et non-extension (à la fois contact.aspx et/contact /) en utilisant un HttpHandler personnalisé dans IIS7. Mon gestionnaire fonctionne très bien dans un cas comme dans l'autre, mais dès que j'essaie de traiter les deux cas, cela ne fonctionne que pour un cas. S'il vous plaît voir Handlers snippet de mon web.config ci-dessous:Problème lors de l'utilisation de HttpHandler personnalisé pour traiter les demandes de pages .aspx et de non-extension dans IIS7

Si je ne garde que la cartographie à « * .aspx », puis toutes les demandes .aspx sont correctement traités, mais les demandes de toute évidence ne fonctionnera pas sans extension:

<add name="AllPages.ASPX" path="*.aspx" verb="*" type="Test.PageHandlerFactory, Test" preCondition="" /> 

Si je change le mappage en "*", toutes les demandes sans extension sont traitées correctement, mais les requêtes ".aspx" qui doivent encore être traitées par ce gestionnaire cessent de fonctionner. Notez que j'ajouté l'entrée StaticFiles afin de traiter les fichiers qui sont sur le disque comme des images, css, js, etc.

<add name="WebResource" path="WebResource.axd" verb="GET" type="System.Web.Handlers.AssemblyResourceLoader" /> 
<add name="StaticFiles" verb="GET,HEAD" path="*.*" type="System.Web.StaticFileHandler" resourceType="File" /> 
<add name="AllPages" path="*" verb="*" type="Test.PageHandlerFactory, Test" preCondition="" /> 

Ce qui est fou est que lorsque je charge une demande « .aspx » (avec le 2ème configuration illustrée) IIS7 donne une erreur 404 non trouvée. L'erreur indique également que la demande est traitée par le gestionnaire StaticFiles. Mais je me suis assuré d'ajouter resourceType = "File" à StaticFileHandler afin d'éviter cela. Selon MS, cela signifie que la demande concerne uniquement les "fichiers physiques sur le disque". Suis-je mal interpréter/interpréter la partie "sur le disque"?

Mon fichier .aspx n'est pas sur le disque, c'est pourquoi je veux utiliser le gestionnaire en premier lieu.

Répondre

2

La 2ème configuration entraînera la gestion de * .aspx par StaticFileHandler car les fichiers existent pour répondre aux critères du gestionnaire. Cependant, le gestionnaire est configuré pour ne pas servir ces fichiers et produit un message 404 à la place.

Une meilleure solution serait d'utiliser une implémentation HttpModule telle que URL Rewrite Module pour réécrire des chemins virtuels vers des pages ou des gestionnaires.