Pregunta Mapeo de problemas HttpHandler -> HTTP Error 404 no encontrado


Tengo problemas para tratar de asignar un HttpHandler en el web.config.

Este es el bit de configuración relevante:

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

Cuando navego a http://localhost/myApp/whatever.hndlr Recibo un error de servidor 404 (no encontrado).

Es la primera vez que conecto un HttpHandler, así que podría extrañar algo, ¡cualquier ayuda apreciada!

ACTUALIZAR:

Logré que funcionara usando ambas respuestas hasta ahora. Quien es capaz de explicar por qué funciona obtiene la respuesta marcada.

Esta es mi configuración (no funcionará si no tengo ambas - Estoy corriendo IIS7 en modo clásico)

System.web:

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

System.webserver:

<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>

32
2018-05-18 15:35


origen


Respuestas:


¿Está utilizando IIS7? De ser así, ¿se está ejecutando el grupo de aplicaciones en modo clásico o canalizado? Si es IIS7 en modo pipeline, entonces la referencia del manejador debe ir a la siguiente sección

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

en lugar de en la siguiente sección.

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

27
2018-05-18 15:45



Solo como una guía para aquellos que tienen este problema, encontré el atributo crucial para ser ...

resourceType="Unspecified"

Originalmente seguí un ejemplo de Microsoft para configurar esto y lo tenían como

resourceType="File"

que me siguió dando errores 404. Mi HTTPHandler devuelve gráficos.

Espero que esto ayude :)


9
2018-03-09 14:38



Estoy usando IIS7, la solución es:

en la sección

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

y sección

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

5
2018-01-23 14:47



¿Cuál es la extensión de su controlador? Si está usando una extensión personalizada como .hndlr es posible que también necesite agregar un ScriptMap en IIS y apúntelo al tiempo de ejecución de ASP.NET para que IIS pueda reenviar la solicitud al procesador correcto.


  1. En IIS7 vaya a su sitio web
  2. En el grupo de IIS ve a Asignaciones de controlador
  3. Debajo Comportamiento hacer clic Añadir mapa de secuencia de comandos
  4. Establecer ruta de solicitud a * .hndlr
  5. Establezca la ruta de acceso al tiempo de ejecución de ASP.NET (% windir% \ Microsoft.NET \ Framework64 \ v2.0.50727 \ aspnet_isapi.dll) o la versión que esté ejecutando.

Luego, en su web.config, deberá registrar el controlador en la sección correspondiente como se describe en la otra respuesta.


4
2018-05-18 16:49



También es posible experimentar este error si ha configurado el controlador para 32 bits, pero está ejecutándose en 64 bits (o viceversa). Es fácil configurar ambos y tener todas las bases cubiertas.

Observe las diferencias entre "preCondition" y "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>

2
2017-07-30 05:34



Espero que mi solución ayude a otros. En un servidor se movió de IIS6 a 7.5, ambos .NET 4.0 Integrated, tuve un control Captcha que dejó de funcionar. Resulta que eliminar este atributo preCondition="integratedMode,runtimeVersionv2.0"  desde el <add> nodo en <system.webserver><handlers> resolvió el problema


0
2018-01-22 18:50



Ninguna de las respuestas anteriores funcionó para mí.
Estoy usando IIS 8.5, .Net v4.0, Integrated, y todavía obtenía un 404 con la siguiente configuración de controlador:

<system.webServer>
    <handlers>
       <add name="testEmail" path="*.em" verb="*" type="MyApp.testRazorEmailHandler, MyApp" resourceType="Unspecified" requireAccess="Script" />
    </handlers>
</system.webServer>


Permití el rastreo y encontré lo siguiente:

116. -HANDLER_CHANGED 

    OldHandlerName              testEmail 
    NewHandlerName              System.Web.Mvc.MvcHandler 
    NewHandlerModules           ManagedPipelineHandler 
    NewHandlerScriptProcessor
    NewHandlerType              System.Web.Mvc.MvcHandler, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 


Como puede ver, parece que ha recogido correctamente la solicitud utilizando mi HttpHandler personalizado testEmail pero MVC lo había robado.
Abrí mis definiciones de ruta en RouteConfig.cs y descubrió que agregando:

   routes.IgnoreRoute("{resource}.em");

Lo hice para ignorar las solicitudes destinadas a mi Handler.
Espero que esto ayude a alguien, ¡me estaba arrancando el pelo!


0
2017-08-08 08:04