Мой вопрос похож на, но не идентичен:
Почему мой хост (softsyshosting.com) не может поддерживать обработчики событий BeginRequest и EndRequest? (я также читал упомянутый там блог mvolo)
Цель состоит в том, чтобы успешно перехватить HttpApplication.BeginRequest в событии IHttpModule.Init (или в любом другом месте внутри модуля), используя обычный HttpModule, интегрированный через систему. webServer config, то есть тот, который не:
переопределяет HttpApplication (модуль предназначен для автономного и многоразового использования, поэтому, например, у меня есть такая конфигурация):
com) поддерживают обработчики событий BeginRequest и EndRequest? (Я также читал упомянутый там блог mvolo) ... Мой вопрос похож на, но не идентичен:
Почему мой хост (softsyshosting.com) не может поддерживать обработчики событий BeginRequest и EndRequest? (я также читал упомянутый там блог mvolo)
Цель состоит в том, чтобы успешно перехватить HttpApplication.BeginRequest в событии IHttpModule.Init (или в любом другом месте внутри модуля), используя обычный HttpModule, интегрированный через систему. webServer config, то есть тот, который не:
- вторгается в Global.asax или
переопределяет HttpApplication (модуль предназначен для автономного и многоразового использования, поэтому, например, у меня есть такая конфигурация):
com) поддерживают обработчики событий BeginRequest и EndRequest? (Я также читал упомянутый там блог mvolo) ... Мой вопрос похож на, но не идентичен:
Почему мой хост (softsyshosting.com) не может поддерживать обработчики событий BeginRequest и EndRequest? (я также читал упомянутый там блог mvolo)
Цель состоит в том, чтобы успешно перехватить HttpApplication.BeginRequest в событии IHttpModule.Init (или в любом другом месте внутри модуля), используя обычный HttpModule, интегрированный через систему. webServer config, то есть тот, который не:
- вторгается в Global.asax или
переопределяет HttpApplication (модуль предназначен для автономного и многоразового использования, поэтому, например, у меня есть такая конфигурация):
До сих пор любая стратегия, которую я пытался прикрепить к 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 вообще не ссылается на объекты Context или Request.
Я пробовал:
- Удалены все ссылки на HttpContext.Current в любом месте проекта (все еще симптом 1)
- Протестировано удаление всех код из тела моего метода OnBeginRequest, чтобы убедиться, что проблема не является внутренней по отношению к методу (= исключение)
- Обнюхивание трассировки стека и вызов только app.BeginRequest + = ... когда, если стек не запускается с помощью InitializeApplication (= BeginRequest не запускается)
- Вызывается только app.BeginRequest + = при втором проходе через Init (= BeginRequest не запускается)
Кто-нибудь знает хороший подход? Есть ли какая-то косвенная стратегия для подключения Application_Start внутри модуля (кажется маловероятной)? Еще одно событие, которое а) можно перехватить из конструктора модуля или метода Init, и б) которое впоследствии является безопасным местом для присоединения обработчиков событий BeginRequest?
Большое спасибо