Domanda

Ho un'applicazione MVC4 a cui ho aggiunto un HttpHandler:

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

Ho anche ignorato il percorso rilevante in RegisterRoutes in modo che le richieste di "file" non siano gestite da MVC:

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

Il problema è che il MyHttpHandler è invocato solo per le richieste di "file", non per nessuno dei suoi figli o sotto-conduttori.

Ho provato a usare il <location> Elemento, ma far funzionare questo significa cherai il percorso virtuale dell'applicazione nell'attributo "percorso" (ad es. <location path='MyApp\Files'>).

Qual è il metodo corretto da utilizzare per consentire a tutte le richieste di "file" e di uno dei suoi sotto-conduttori (e sotto-conduttori di tali cartelle, ecc.) MyHttpHandler?

È stato utile?

Soluzione

Grattalo...<location> sembra funzionare bene. Tuttavia, hai bisogno di entrambi i <web> e <webServer> Voci per garantire che funzioni sia per IIS che per il server di sviluppo di Visual Studio. Per esempio:

<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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top