Это - просто другая "работа в dev сервере, почему не работа в IIS" вводит вопрос.
Я создал хороший DAL с помощью NHibernate, как описано здесь. При создании ISession я поднимаю трубку обработчик событий к HttpApplication. EndRequest для заботы о чистке его.
Однако я развернул свой сайт на IIS, и он говорит:
Обработчики событий могут только быть связаны с событиями HttpApplication во время инициализации IHttpModule.
Я полностью понимаю то, что говорит сообщение, но я не могу undestrand почему.
Я могу подписаться на a Button
событие в какое-либо время, почему я не могу подписаться на событие HttpApplication
?
Я был бы очень благодарен, если кто-то мог бы пролить некоторый свет на это.
И я также задаюсь вопросом, почему это работает с сервером разработки а не с IIS 7?
Править: Теперь, когда два месяца передали, я все еще не получил полезных ответов. :(
Эта проблема - действительно это трудно?
Вы пытаетесь использовать HttpApplication вне его конвейера инициализации. Просто не делай этого. Как говорится в ошибке, привяжите свои события во время инициализации IHttpModule.
Потому что в IIS7 есть некоторые изменения в том, как запускается HTTP-приложение (в основном, рабочий процесс, связанный с HTTP-приложением).
Посмотрите на http://n2cms.codeplex.com/Thread/View.aspx?ThreadId=38311.
Если вы запустите IIS7 в классическом режиме или в интегрированном режиме со следующими элементами в web.config, он должен работать нормально:
<configuration>
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
</system.webServer>
</configuration>
(взято из http://code.google.com/p/n2cms/source/browse/trunk/src/wwwroot/Web.config)