2013-05-10 3 views
0

Я определил HTTP Handler и добавил запись в моем web.configASP.NET HttpHandler против обработчика IIS

<add verb="GET" path="TestApp/*" type="TestApp.TestHandler, TestWebApp" /> 

Это работает, как я ожидал бы КРОМЕ, когда я сталкиваюсь статические ресурсы, например, JPG, PNG файлы

мне нужен мой обработчик также обрабатывать пути, как TestApp/logo.gif но похоже IIS имеет StaticHandler зарегистрировано, чтобы перехватить эти запросы

есть ли способ для моего ASP.NET HttpHandler, чтобы иметь возможность обрабатывать запросы для статических ресурсов ТОЛЬКО для пути Tes tApp/*, но пусть IIS StaticHandler справится со всем остальным?

И да, я понимаю, что выпускающие IIS обрабатывать статические ресурсы со своим собственным обработчиком является более быстрым и эффективным

+0

Попробуйте установить путь = "TestApp /*.*". Я не думаю, что вам нужно что-то изменить в IIS, чтобы это работало. – AContractor

ответ

1

Ваш обработчик будет перехватывать эти запросы, если вы работаете в режиме интегрированного трубопровода:

<system.webServer> 
    <handlers> 
     <add name="TestHandler" path="TestApp/*" verb="GET" type="TestApp.TestHandler, TestWebApp" /> 
    </handlers> 
</system.webServer> 

Если вы работаете в классическом режиме Pipeline вы должны зарегистрировать фильтр ISAPI в IIS для того, чтобы сделать эти запросы пройти через управляемый обработчик.

+0

Я бегу в классическом режиме трубопровода - я думаю, единственный вариант, который у меня есть, - это зарегистрировать фильтр ISAPI в IIS. – blue18hutthutt

+1

Да, это единственный вариант. Кстати, есть ли причина, по которой вы работаете в классическом режиме в IIS7? Это было жизнеспособно в IIS6, но на вашем месте я бы определенно подумал о переходе на интегрированный режим трубопровода. –

+0

Это большое, существующее приложение в бюрократической среде, к сожалению, когда изменения в экосистеме запрещены без длительной агитации и формы на бланках форм, которые будут отправлены – blue18hutthutt

1

Вы должны добавить к вашему web.config:

<modules runAllManagedModulesForAllRequests="true" /> 

Это гарантирует, что даже запросы для статических файлов передается через .net-конвейер.

+2

Я бы рекомендовал не делать этого. Если вы работаете в интегрированном режиме конвейера, лучше зарегистрировать обработчик только для определенного пути, вместо того, чтобы делать ВСЕ ПРОБЕЛЫ, проходящие через управляемый конвейер, который может влиять на производительность вашего приложения. –

+1

Ну, он упомянул: «Я понимаю, что позволить IIS обрабатывать статические ресурсы с помощью собственного обработчика быстрее и эффективнее», поэтому я говорю, что это возможность. – Kenneth

Смежные вопросы