Dot-Net

為什麼事件處理程序只能在 IHttpModule 初始化期間綁定到 HttpApplication 事件?

  • May 23, 2014

這只是另一個“在開發伺服器中工作,為什麼不在 IIS 中工作”類型的問題。

如此處所述,我使用 NHibernate 創建了一個不錯的 DAL 。創建 ISession 時,我將事件處理程序連接到 HttpApplication.EndRequest 以負責清理它。

但是,我將我的站點部署到 IIS,它說:

事件處理程序只能在 IHttpModule 初始化期間綁定到 HttpApplication 事件。

我完全理解消息在說什麼,但我無法理解為什麼。

我可以隨時訂閱Button的事件,為什麼我不能訂閱 的事件HttpApplication

如果有人能對此有所了解,我將不勝感激。

而且我還想知道,為什麼它與開發伺服器一起工作而不是與 IIS 7 一起工作?

編輯:現在兩個月過去了,我仍然沒有收到任何有用的答案。:(

這個問題真的那麼難嗎?

您正在嘗試在其初始化管道之外使用 HttpApplication 。只是不要這樣做。正如錯誤所說,在 IHttpModule 初始化期間綁定您的事件。

因為IIS7對HTTP應用程序的啟動方式(基本上是關聯的工作程序及其HTTP應用程序)有一些改變。

看看http://n2cms.codeplex.com/Thread/View.aspx?ThreadId=38311

如果您在經典模式或集成模式下使用 web.config 中的以下項目執行 IIS7,它應該可以正常工作:

<configuration>
  <system.webServer>
     <validation validateIntegratedModeConfiguration="false"/>
  </system.webServer>
</configuration>

(摘自http://code.google.com/p/n2cms/source/browse/trunk/src/wwwroot/Web.config

引用自:https://stackoverflow.com/questions/2781346