Question

J'ai une application MVC4 à laquelle j'ai ajouté un HttpHandler:

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

J'ai également ignoré le chemin pertinent dans RegisterRoutes de sorte que les demandes de "fichiers" ne sont pas traitées par MVC:

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

Le problème est que le MyHttpHandler est invoqué uniquement pour les demandes de «fichiers», et non pour aucun de ses enfants ou sous-reprendurs.

J'ai essayé d'utiliser le <location> élément, mais faire fonctionner cela signifie que vous serez en codage dur le chemin virtuel de l'application dans l'attribut "Path" (par exemple, <location path='MyApp\Files'>).

Quelle est la méthode correcte à utiliser pour permettre à toutes les demandes de «fichiers» et à l'un de ses sous-tracas MyHttpHandler?

Était-ce utile?

La solution

Gratter ça ...<location> semble fonctionner correctement. Cependant, vous avez besoin des deux <web> et <webServer> Entrées pour s'assurer qu'elle fonctionne à la fois pour IIS et pour le serveur de développement Visual Studio. Par exemple:

<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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top