asp.net configuration httphandler web-config

asp.net - Mapeo de problemas HttpHandler-> HTTP Error 404 no encontrado



configuration web-config (7)

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


¿Cuál es la extensión de su controlador? Si está utilizando una extensión personalizada como .hndlr, es posible que también necesite agregar un ScriptMap en IIS y apuntarlo 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 IIS, vaya a Asignaciones de controlador
  3. En Acciones, haga clic en Agregar 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.


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


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 la eliminación de este atributo preCondition="integratedMode,runtimeVersionv2.0" del nodo <add> en <system.webserver><handlers> resolvió el problema.


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>


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 testEmail personalizado, pero MVC lo había robado .
Abrí las definiciones de ruta en RouteConfig.cs y descubrí 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!


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


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>