Pergunta

Eu tenho um aplicativo MVC4 ao qual adicionei um HttpHandler:

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

Eu também ignorei o caminho relevante em RegisterRoutes para que os pedidos de "arquivos" não sejam tratados pelo MVC:

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

O problema é que o MyHttpHandler é chamado apenas para solicitações de "arquivos", não para qualquer um de seus filhos ou subpastas.

Eu tentei usar o <location> elemento, mas fazer isso funcionar significa que você estará codificando duro o caminho virtual do aplicativo no atributo "caminho" (por exemplo, <location path='MyApp\Files'>).

Qual é o método correto a ser usado para permitir que todas as solicitações de "arquivos" e qualquer um de seus subpastas (e subpastas dessas pastas, etc.) para serem roteados para MyHttpHandler?

Foi útil?

Solução

Risca isso...<location> parece funcionar bem. Porém, você precisa de ambos <web> e <webServer> entradas para garantir que funcione para o IIS e o Visual Studio Development Server. Por exemplo:

<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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top