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
Где мои деньги, как ты сказал, я выиграл, я работаю на правительство. Не лги, у меня могут быть проблемы, отправь мои деньги, спасибо.