NullReferenceException в PipelineStepManager.ResumeSteps

Так как я изменил свой хостинг на веб-форму ASP.NET 4.0 и интегрированный режим IIS7, на моем веб-сайте обычно появляется следующая ошибка:

[NullReferenceException: ссылка на объект не установлена ​​в экземпляр объект.] System.Web.PipelineStepManager.ResumeSteps(исключение ошибка) +197
System.Web.HttpApplication.BeginProcessRequestNotification(HttpContext контекст, AsyncCallback cb) +89
System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, контекст HttpContext) +189

Однако сайт работает отлично. Как я могу исправить эту проблему?

Ответ 1

Как сообщил Gisli Konrao в комментарии, это связано с тем, что у вас есть специальный обработчик событий, подключенный в приложении ASP.NET MVC 4.

В моем случае у меня было:

this.BeginRequest += new EventHandler(MvcApplication_BeginRequest);

После комментирования этого утверждения проблема была исправлена ​​(ASP.NET связывает эти события с фоном, поэтому просто определение этого будет заставлять его работать).

Ответ 2

Я решил это, переместив мой код подключения наблюдателя событий BeginRequest в конструктор Global.asax(MvcApplication).

Я также подал еще одну ошибку подключения, так как аналогичный был закрыт как не воспроизводимый, но эта ошибка, кажется, во всех форумах в Интернете.

https://connect.microsoft.com/VisualStudio/feedback/details/788481/iis-express-with-vs2012-null-ref-when-attaching-handler-to-httpapplication-beginrequest

null ref никогда не является правильным. Мы не должны видеть null refs из MS API.

Ответ 3

Есть ли у вас какие-либо пользовательские HttpModules в вашем приложении? Это случилось со мной, когда у меня было, и HttpModule добавили события приложения в Init. Попробуйте отключить свой пользовательский HttpModule и посмотрите, прошло ли это приложение. Если это так, то это из-за разницы между тем, как HttpModule работает в .Net 3.5 и .Net 4.0.

Ответ 4

Поместите код для подключения событий и элементов инициализации в переопределенном методе Init() класса HttpApplication. Это должно срабатывать после того, как все необходимые вещи ASP.NET настроены.

Ответ 5

Где мои деньги, как ты сказал, я выиграл, я работаю на правительство. Не лги, у меня могут быть проблемы, отправь мои деньги, спасибо.