Frage

Ich habe eine MVC4 -Anwendung, zu der ich eine hinzugefügt habe HttpHandler:

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

Ich habe auch den relevanten Weg in ignoriert RegisterRoutes Damit die Anfragen zu "Dateien" nicht von MVC behandelt werden:

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

Das Problem ist, dass die MyHttpHandler wird nur für Anfragen an "Dateien" aufgerufen, nicht für ihre Kinder oder Unterordner.

Ich habe versucht, die zu verwenden <location> Element, aber das funktionieren, bedeutet, dass Sie den virtuellen Pfad der Anwendung im "Pfad" -attribut (z. B., <location path='MyApp\Files'>).

Was ist die richtige Methode, um alle Anfragen für "Dateien" und alle Unterordner (und Unterordner dieser Ordner usw.) zuzulassen MyHttpHandler?

War es hilfreich?

Lösung

Vergiss das...<location> scheint in Ordnung zu funktionieren. Sie brauchen jedoch beide <web> und <webServer> Einträge, um sicherzustellen, dass es sowohl für IIS als auch für den Visual Studio Development Server funktioniert. Zum Beispiel:

<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>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top