Получение NullReferenceException в интегрированном режиме IIS7 - PullRequest
3 голосов
/ 30 августа 2011

У меня есть приложение под управлением .NET 4.0 с

  • MVC 3.0
  • Microsoft ServiceLocator 1.0
  • StructureMap 2.6.2
  • Адаптер StructureMap 1.1.0.2
  • NHibernate 3.1.0.4000
  • Log4Net 1.2.10

Приложение хорошо работает в классическом режиме IIS6 и IIS7. Запуск того же приложения в интегрированном режиме IIS7 дает после Global.asax Application_Start исключение NullReferenceException.

Трассировка стека:

[NullReferenceException: Object reference not set to an instance of an object.]
System.Web.PipelineStepManager.ResumeSteps(Exception error) +1116
System.Web.HttpApplication.BeginProcessRequestNotification(HttpContext context, AsyncCallback cb) +89
System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +189

Подключенный отладчик не прерывается при исключении. Но страница показывает желтую страницу смерти.

Любая идея, где я могу посмотреть или подключить, чтобы исправить ошибку?

Ответы [ 2 ]

3 голосов
/ 06 сентября 2011

Согласно Ошибка при развертывании приложения ASP.NET MVC NHibernate на IIS7 и многих других публикациях не поддерживается для инициализированных NHibernate в Application_Start больше, если приложение работает в интегрированном режиме. Я не нашел реальной причины для такого поведения. Возможно, причина в ответе Дарина, но я не нашел доступа к HttpContext.Current в коде инициализации NHibernate.

Обходные пути:

  • использовать модуль для инициализации nhibernate
  • инициализировать nhibernate в Application_BeginRequest, но утверждать, что он инициализируется только один раз
1 голос
/ 31 августа 2011

При работе в интегрированном режиме такие объекты, как HttpContext, Request, Response, Session, ... недоступны в Application_Start.Поэтому убедитесь, что ни один из вашего кода не пытается получить к ним доступ в этом методе.

...