2008-11-10 4 views
2

Есть ли способ узнать основной/вызывающий запрос в httpmodule? Я хочу, чтобы мой код модуля запускался на главной странице aspx, а не на изображениях и сценариях. Я могу проверить путь для «.aspx», но кажется, что должен быть лучший способ.Определить главный/вызывающий запрос HttpModule

ответ

3

Из вашего модуля вы можете вызвать HttpContext.Current.Handler и посмотреть, является ли это страницей. Вероятно, вам придется это сделать в событии PostMapRequestHandler или в последующем событии в жизненном цикле.

В качестве альтернативы, возможно, вы можете проверить, какой HttpHandlerFactory используется для запроса. Если это PageHandlerFactory, вы можете запустить свою логику, и в противном случае вы можете пропустить ее.

+0

Проверка CurrentHandler работает, и это нормально, если отмечено в событии PreRequestHandler. Я использую spring.net, поэтому в моем случае это обработчик весной страницы. Проверка аналогична проверке расширения aspx, но, возможно, это немного чище. Спасибо – Marshal 2008-11-11 23:16:46

0

IIS не будет вызывать обработчик ASP.NET для изображений и скриптов *, поэтому HTTPModule должен работать только в ASPX-запросах.

  • Если вы не имеете в виду скрипты, обслуживаемые как встроенный ресурс, то есть webresource.axd.
+0

Это верно для IIS6, но не для IIS7. – 2008-11-11 04:30:50