Обработчики событий могут быть связаны только с событиями HttpApplication во время инициализации IHttpModule - PullRequest
6 голосов
/ 03 марта 2011

Я получаю следующую ошибку

'Обработчики событий могут быть связаны только с событиями HttpApplication во время инициализации IHttpModule.' по следующему коду (строка, выделенная жирным шрифтом или двойная **)

protected void Application_BeginRequest(object sender, EventArgs e)
{
    HttpApplication app = (HttpApplication)sender;
    **app.EndRequest += new EventHandler(Application_EndRequest);**        
}

protected void Application_EndRequest(object sender, EventArgs e)
{
    UnitOfWork.Commit();
}

, который упоминается в файле Global.asax. Кто-нибудь может выяснить, где мне не хватает? Спасибо.

Ответы [ 2 ]

7 голосов
/ 03 марта 2011

Обработчик событий живет всю жизнь вашего приложения, поэтому вам нужно добавить его только один раз, а не добавлять его при каждом запросе.Само событие будет запускать каждый запрос, и каждый раз будет вызываться только один обработчик.

Добавьте его к Application_Start в global.asax, а не Application_BeginRequest или лучше,вместо этого создайте модуль HTTP.

Кроме того, я думаю, вам может даже не понадобиться обработчик событий .Метод с текущим именем будет вызываться по соглашению, аналогично Page / Control AutoEventWireup (например, Page_Load).Просто отметьте, что это может иметь проблемы в приложениях ASP.NET MVC, как сообщают некоторые люди.Итак, я предлагаю переименовать функцию, добавить обработчик событий в Application_Start или, что лучше, в новый созданный вами модуль HTTP .

3 голосов
/ 03 марта 2011

Попробуйте закомментировать строку, помеченную "**".Asp.Net сама вызовет соответствующие методы, если последуют соглашения об именах: "{Scope}" _ "{Event}", где "{Scope}" - это Application, если вы хотите обрабатывать события уровня приложения, или "Session", если вы хотитедля обработки событий на уровне сеанса, а «{Событие}» - это имя события, например, «Начало», «Конец» и т. д. Дополнительная информация: http://msdn.microsoft.com/en-us/library/bb470252.aspx#Stages

...