Problème d'utilisation personnalisée HttpHandler pour traiter les demandes pour les deux .aspx et pages non-extension dans IIS7

StackOverflow https://stackoverflow.com/questions/1919225

Question

Je suis en train de traiter à la fois ".aspx" et les demandes de page non-extension (à savoir à la fois contact.aspx et / contact /) en utilisant une commande HttpHandler dans IIS7. Mon gestionnaire fonctionne très bien dans l'un ou l'autre cas, mais dès que je tente de traiter les deux cas, il ne fonctionne que pour un. S'il vous plaît voir Handlers snippet de mon web.config ci-dessous:

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 « * », puis toutes les demandes sont traitées correctement sans extension, mais « .aspx » demandes qui devraient être traitées encore 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="" />

La chose folle est que lorsque je charge une demande « .aspx » (avec la 2e configuration représentée) IIS7 donne une erreur 404 introuvable. L'erreur indique également que la demande est traitée par le gestionnaire StaticFiles. Mais je me suis assuré d'ajouter resourceType = « Fichier » à la StaticFileHandler afin d'éviter cela. Selon MS cela signifie que la demande est uniquement pour « les fichiers physiques sur le disque ». Est-ce que j'interprète mal / interpréter la partie « sur le disque »?

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

Était-ce utile?

La solution

La 2ème configuration provoquera * .aspx se traités par StaticFileHandler parce que les fichiers existent afin qu'ils répondent aux critères pour le gestionnaire. Cependant, le gestionnaire est configuré pour ne pas servir ces fichiers et produit un message au lieu 404.

Une meilleure solution serait d'utiliser une implémentation HttpModule comme

scroll top