Мой вопрос похож, но не идентичны:HttpModule.Init - смело добавить HttpApplication.BeginRequest обработчик в IIS7 интегрированном режиме
Why can't my host (softsyshosting.com) support BeginRequest and EndRequest event handlers? (я также прочитать mvolo блог ссылки в ней)
Цель чтобы успешно подключить HttpApplication.BeginRequest в случае IHttpModule.Init (или где-нибудь внутренний к модулю), используя обычный HttpModule интегрированный с помощью system.webServer конфигурации, то есть тот, который не делает:
- вторгнуться Global.asax или
переопределить HttpApplication (модуль предназначен для автономного использования & многоразовый, т.е. У меня есть конфигурации, как это):
<system.webServer> <validation validateIntegratedModeConfiguration="false"/> <modules> <remove name="TheHttpModule" /> <add name="TheHttpModule" type="Company.HttpModules.TheHttpModule" preCondition="managedHandler" />
До сих пор, любая стратегия, я пытался прикрепить слушателя к HttpApplication.BeginRequest приводит к одной из двух вещей, симптом 1 является то, что BeginRequest никогда не срабатывает, или симптом 2 является то, что следующее исключение брошено на все управляемые запросы, и я не могу поймать & ручки из кода пользователя:
Stack Trace:
[NullReferenceException: Object reference not set to an instance of an object.]
System.Web.PipelineModuleStepContainer.GetEventCount(RequestNotification notification, Boolean isPostEvent) +30
System.Web.PipelineStepManager.ResumeSteps(Exception error) +1112
System.Web.HttpApplication.BeginProcessRequestNotification(HttpContext context, AsyncCallback cb) +113
System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +616
комментирования app.BeginRequest += new EventHandler(this.OnBeginRequest)
в Init останавливает исключение, конечно. Init не ссылается на объекты контекста или запроса вообще.
Я пробовал:
- Удалены все ссылки на HttpContext.Current где-нибудь в проекте (по-прежнему симптома 1)
- Испытано удаления весь код из тела моего OnBeginRequest метода, чтобы обеспечить проблема не была внутренней для метода (= исключение)
- Обнюхивание трассировки стека и вызов только приложения. BeginRequest + = ... когда, если стек не запускается InitializeApplication (= BeginRequest не работает)
- Только вызов app.BeginRequest + = на втором проходе через Init (= BeginRequest не сжигание)
Кто-нибудь знает о хорошем подходе? Есть ли какая-то косвенная стратегия для подключения Application_Start в модуле (кажется маловероятным)? Другое событие, которое: a) можно зацепить с помощью конструктора модуля или метода Init, а b), который впоследствии является безопасным местом для присоединения обработчиков событий BeginRequest?
Спасибо большое
в 'ничтожной IHttpModule.Init (HttpApplication приложение)', 'Я называю app.BeginRequest + = новый EventHandler (this.OnApplication_BeginRequest)'. Затем я использую статический bool на уровне класса, _initted, чтобы предотвратить добавление обработчика несколько раз. Отчасти потому, что ситуация забивает меня за такой цикл. –
Одинаковый вопрос здесь. Я также отправил сообщение на сайт IIS, надеясь, что кто-то из Microsoft может получить ответ: http://forums.iis.net/p/1164977/1972908.aspx –
Любое решение? Я могу добавить httpModule в любое приложение ASP.NET. Однако я получаю ту же ошибку при попытке добавить IHttpModule на сайт SharePoint 2013 (основанный на .NET 4.0). Проблема возникает, как только я присоединяюсь к событию BeginRequest. – lapsus