2013-11-08 2 views
5

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

<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?

ответ

4

Scratch, который ... <location> похоже работает нормально. Хотя вам нужны записи <web> и <webServer>, чтобы гарантировать, что он работает как для IIS, так и для Visual Studio Development Server. Например:

<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> 
Смежные вопросы