Есть ли способ узнать основной/вызывающий запрос в httpmodule? Я хочу, чтобы мой код модуля запускался на главной странице aspx, а не на изображениях и сценариях. Я могу проверить путь для «.aspx», но кажется, что должен быть лучший способ.Определить главный/вызывающий запрос HttpModule
ответ
Из вашего модуля вы можете вызвать HttpContext.Current.Handler и посмотреть, является ли это страницей. Вероятно, вам придется это сделать в событии PostMapRequestHandler или в последующем событии в жизненном цикле.
В качестве альтернативы, возможно, вы можете проверить, какой HttpHandlerFactory используется для запроса. Если это PageHandlerFactory, вы можете запустить свою логику, и в противном случае вы можете пропустить ее.
IIS не будет вызывать обработчик ASP.NET для изображений и скриптов *, поэтому HTTPModule должен работать только в ASPX-запросах.
- Если вы не имеете в виду скрипты, обслуживаемые как встроенный ресурс, то есть webresource.axd.
Это верно для IIS6, но не для IIS7. – 2008-11-11 04:30:50
Проверка CurrentHandler работает, и это нормально, если отмечено в событии PreRequestHandler. Я использую spring.net, поэтому в моем случае это обработчик весной страницы. Проверка аналогична проверке расширения aspx, но, возможно, это немного чище. Спасибо – Marshal 2008-11-11 23:16:46