35 votes

Problème de mappage HttpHandler -> Erreur HTTP 404 introuvable

Je vais avoir des problèmes en essayant de carte un HttpHandler dans le web.config.

C'est la config bits:

<httpHandlers>
  <add verb="*" path="*.hndlr" type="MyAssembly.MyHandler, MyAssembly" validate="false" />
</httpHandlers>

Lorsque je navigue à http://localhost/myApp/whatever.hndlr , j'obtiens un serveur d'erreur 404 (page non trouvée).

C'est la 1ère fois que je suis connecter un HttpHandler donc j'ai peut-être raté quelque chose - toute aide appréciée!

Mise à JOUR:

J'ai réussi à le faire fonctionner en utilisant à la fois des réponses à ce jour - qui est capable de exaplin pourquoi il fonctionne obtient la réponse!

C'est ma config (ne fonctionne pas si N'avez pas les deux - je suis en cours d'exécution IIS7 en mode classique)

Système.web:

<httpHandlers>
    <add verb="*" path="*MyHandler.hndlr" type="MyAssembly.MyAssemblyHandler, MyAssembly" validate="false"/>
</httpHandlers>

Système.serveur web:

<handlers>
    <add name="MyHandler" verb="*" path="*MyHandler.hndlr" type="MyAssembly.MyAssemblyHandler, MyAssembly" validate="false" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script"/>
</handlers>

29voto

Ben Robinson Points 14558

Utilisez-vous IIS7, si c'est le cas, le pool d'applications s'exécute en mode classique ou en mode pipeline? S'il s'agit d'IIS7 en mode pipeline, la référence du gestionnaire doit aller dans la section suivante

 <system.webServer>
    <handlers>
    </handlers>
<system.webServer>
 

plutôt que dans la section suivante.

 <system.web>
    <httpHandlers>
    </httpHandlers>
</system.web>
 

11voto

CResults Points 4309

Tout comme un guide pour ceux qui sont aux prises avec ce problème, j'ai trouvé que l'attribut crucial était ..

 resourceType="Unspecified"
 

J'ai initialement suivi un exemple Microsoft pour configurer cela et ils l'avaient comme

 resourceType="File"
 

qui ne cessait de me donner 404 erreurs. Mon HTTPHandler renvoie des graphiques.

J'espère que cela t'aides :)

5voto

j'utilise IIS7, la solution est:

dans la section

 <system.web>
    <httpHandlers>
        <add verb="*" path="*.ashx" type="CVOS.MyDocumentHandler"/>
    </httpHandlers>
<system.web>
 

et section

 <system.webServer>
    <handlers>
       <add name="pdfHandler" verb="*" path="*.ashx"   type="CVOS.MyDocumentHandler" /> 
    </handlers>
<system.webServer>
 

4voto

Wallace Breza Points 2524

Qu'est-ce que l'extension de votre gestionnaire? Si vous utilisez une extension comme .hndlr vous pouvez aussi avoir besoin d'ajouter un ScriptMap dans IIS et l'ASP.NET de l'exécution afin qu'IIS peut transmettre la demande au processeur correct.


  1. Dans IIS7 aller à votre site web
  2. Sous le groupe IIS aller à Mappages de gestionnaires
  3. Sous Actions, cliquez sur Ajouter un Mappage de Script
  4. Set de Demander le Chemin d'accès à *.hndlr
  5. Définir le Chemin d'accès à la ASP.NET d'exécution (%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll) ou quelle que soit la version que vous utilisez.

Ensuite dans votre site web.configuration, vous devez enregistrer le gestionnaire dans la section appropriée comme décrit dans l'autre réponse.

2voto

James Points 1299

Il est également possible de rencontrer cette erreur si vous avez configuré le gestionnaire sur 32 bits, mais que vous exécutez en 64 bits (ou vice versa). Il est facile de configurer les deux et de couvrir toutes les bases.

Notez les différences "preCondition" et "scriptProcessor".

 <handlers>
    <add name="MyHandler_32bit" verb="*" path="*MyHandler.hndlr" preCondition="bitness32" type="MyAssembly.MyAssemblyHandler, MyAssembly" validate="false" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" />
    <add name="MyHandler_64bit" verb="*" path="*MyHandler.hndlr" preCondition="bitness64" type="MyAssembly.MyAssemblyHandler, MyAssembly" validate="false" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" />
</handlers>
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X