Pregunta

Tengo una aplicación MVC4 a la que agregué un HttpHandler:

<system.web>
    ...
    <httpHandlers>
        <add path="Files" verb="*" type="MyHttpHandler" />
    </httpHandlers>
</system.web>

También ignoré el camino relevante en RegisterRoutes para que las solicitudes de "archivos" no sean manejadas por MVC:

routes.IgnoreRoute("Files/{*pathInfo}");

El problema es que el MyHttpHandler se invoca solo para solicitudes a "archivos", no para ninguno de sus hijos o subcarpetas.

He intentado usar el <location> Elemento, pero hacer que eso funcione significa que será difícil codificar la ruta virtual de la aplicación en el atributo "ruta" (por ejemplo, <location path='MyApp\Files'>).

¿Cuál es el método correcto para usar para permitir que todas las solicitudes de "archivos" y cualquiera de sus subcarpetas (y subcarpetas de esas carpetas, etc.) se enruten a MyHttpHandler?

¿Fue útil?

Solución

Rasca eso...<location> parece funcionar bien. Aunque, necesitas ambos <web> y <webServer> Entradas para garantizar que funcione tanto para IIS como para el servidor de desarrollo de Visual Studio. Por ejemplo:

<location path="Files">`
    <system.webServer>
        <handlers>
            <add name="MyHandler" path="*" verb="*" type="MyHttpHandler" />
        </handlers>
    </system.webServer>
    <system.web>
        <httpHandlers>
            <add path="*" verb="*" type="MyHttpHandler" />
        </httpHandlers>
    </system.web>
</location>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top