Estoy teniendo problemas al intentar asignar un HttpHandler en la web.config.

Esta es la config de bits:

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

Cuando me vaya a http://localhost/myApp/whatever.hndlr me estoy haciendo un servidor de error 404 (no encontrado).

Es la 1ª vez que me estoy enganchando un HttpHandler así que puede ser que falte algo – cualquier ayuda apreciada!

ACTUALIZACIÓN:

Me las arreglé para conseguir trabajo usando ambas respuestas hasta el momento – que es capaz de exaplin por qué funciona obtiene la respuesta marcada!

Esta es mi config (no funciona si no tienes tanto – estoy corriendo IIS7 en el modo clásico)

Sistema.web:

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

Sistema.servidor 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>
  • Además de su actualización, si usted está usando IIS6 antything puso en el Sistema.web de la sección será ignorado como este sólo se utiliza en IIS7 Integrados el modo de Canalización. La única razón para tener tanto sería tener una sola web.config que es válido para IIS7 canalizado y calssic modo y IIS6.
  • lo siento que IIS7 – pero, ¿hay que cambiar las cosas? Si puedo quitar el bit en el sistema.web de la sección no funciona (404 no encontrado) y estamos en el modo clásico, por razones de compatibilidad.
  • y si yo comente el uno en el sistema.en la web me sale «Error al Ejecutar la URL» – sólo funciona con ambos para algunos divertidos razón! 🙂
  • La actualización fue un PROTECTOR de la VIDA … muchas gracias!
  • encantados de ayudarle!
  • validate no es permitido en system.webServer

InformationsquelleAutor JohnIdol | 2010-05-18

7 Comentarios

  1. 28

    Están utilizando IIS7, si así es el grupo de aplicaciones que se ejecutan en clásico o canalizadas modo? Si es IIS7 en canalizado modo, a continuación, el controlador de referencia tiene que entrar en la siguiente sección

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

    en lugar de en la siguiente sección.

    <system.web>
        <httpHandlers>
        </httpHandlers>
    </system.web>
    • ha tenido que añadir name=»MyHandler» con los atributos) – parece prometedor, pero conseguir que un error diferente ahora –> HTTP Error 500.21 – Error Interno del Servidor Controlador «MyHandler» tiene una mala módulo «ManagedPipelineHandler» en su lista de módulos
    • para responder a tu otra pregunta estoy ejecutando en el modo clásico (no segmentado) – lo que explica por qué estoy recibiendo el mensaje de error descrito en el comentario anterior 🙂
    • Te las has arreglado para conseguir que su controlador http trabajo?
    • Sí, la solución fue un poco de una mezcla entre las dos respuestas – estoy a punto de publicar la solución y que es capaz de explicar mejor lo que está pasando obtiene los puntos! 🙂
  2. 9

    Sólo como una guía para aquellos atascado con este problema he encontrado la característica fundamental ser..

    resourceType="Unspecified"

    Originalmente seguido de Microsoft de un ejemplo que lo configuran y que tenía como

    resourceType="File"

    que sólo seguía dándome errores 404. Mi HTTPHandler está volviendo gráficos.

    Espero que esta ayuda 🙂

    • Gracias gracias gracias!
  3. 5

    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 la sección

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

    ¿Qué es la extensión de su controlador? Si usted está utilizando una extensión personalizada como .hndlr usted también puede necesitar para agregar un mapa de scripts en IIS y apuntar a la ASP.NET tiempo de ejecución para que el IIS puede enviar la solicitud a la correcta procesador.


    1. En IIS7 ir a su sitio web
    2. Bajo el grupo IIS ir a Asignaciones de Controlador
    3. Bajo Acciones haga clic en Agregar Mapa de secuencia de Comandos
    4. Conjunto de Solicitud de Ruta de acceso *.hndlr
    5. Establecer Ruta de la ASP.NET tiempo de ejecución (%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll) o cualquier versión que se están ejecutando.

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

  5. 2

    También es posible experimentar este error si se ha configurado el controlador de 32 bits, pero se ejecuta en 64 bits (o viceversa). Es fácil de configurar y tiene todas las bases cubiertas.

    Nota «condición previa», y «scriptProcessor» diferencias.

    <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>
  6. 1

    Ninguna de las respuestas anteriores trabajó para mí.

    Estoy usando IIS 8.5, .Net v4.0, Integrated, y todavía estaba recibiendo un mensaje de error 404 con el siguiente controlador de configuración:

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


    He habilitado el seguimiento y encontrado el 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 se puede ver se ve como se había correctamente recogido la petición utilizando mi costumbre HttpHandler testEmail pero MVC había robado.

    Abrí mi ruta definiciones en RouteConfig.cs y se encontró que la adición de:

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

    Lo tengo a ignorar las peticiones significaba para mi Controlador.


    Espero que esto ayude a alguien – me estaba tirando de los pelos!

    • Esto ha salvado el pellejo. Muchísimas gracias.
  7. 0

    Espero que mi solución va a ayudar a los demás. En un movimiento de servidor de IIS 6 a 7.5, ambos .Net 4.0 Integrado, tuve un Captcha de control que dejar de trabajar. Resulta que la eliminación de este atributo preCondition="integratedMode,runtimeVersionv2.0" de la <add> nodo en <system.webserver><handlers> resuelto el problema.

Dejar respuesta

Please enter your comment!
Please enter your name here