Вопрос

У меня есть приложение MVC4, в которое я добавил HttpHandler:

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

Я также проигнорировал соответствующий путь в RegisterRoutes так что запросы на «файлы» не обрабатываются MVC:

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

Проблема в том, что MyHttpHandler вызывается только для запросов на «файлы», а не ни для одного из своих детей или подразделов.

Я пытался использовать <location> Элемент, но привлечение этого означает, что вы будете жестко кодировать виртуальный путь приложения в атрибуте «Путь» (например, <location path='MyApp\Files'>).

Какой правильный метод для использования для разрешения всех запросов на «файлы» и любые его подразделения (и подразделения этих папок и т. Д.) MyHttpHandler?

Это было полезно?

Решение

Сотрите это...<location> Кажется, работает нормально. Хотя вам нужны оба <web> а также <webServer> Записи, чтобы убедиться, что он работает как для IIS, так и для сервера разработки Visual Studio. Например:

<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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top