2011-12-19 27 views
2

我寫過一個NHibernate Session Provider的HttpModule。它只是在HttpModule的Init方法中打開一個SessionFactory,並在BeginRequest中獲得一個新的Session並在EndRequest中關閉它。另一方面,我在Global.asax中編寫了一個方法,該方法使用來自此名爲GetData的HttpModule的會話。我在Global.asax的Init方法中運行該方法(GetData)。問題是當我在集成模式下使用我的HttpModule時,似乎我的HttpModule在運行Global.asax的Init方法之前沒有初始化。當HttpModule Init方法在ASP.NET集成模式下運行時?

我已經搜索了運行這些方法和事件生命週期的順序,但沒有發現有用的東西!

回答

2

ASP.NET不提供任何保證,當HTTP模塊的init()方法被稱爲相對於彼此(不同於靜態初始化) 。一般來說,應該使用Init()方法來連接事件處理程序,並且應該在事件處理程序中完成任何「真正的工作」。

在轉到下一個事件之前,所有已註冊的特定事件的事件處理程序都將從所有HttpModules(包括Global.asax)中調用,因此您可以通過這種方式控制訂單。

3

在IIS 7.x中,應在您的web.config文件中的system.webServer xml元素中註冊模塊和處理程序。

檢查這個MSDN文章:

+0

我知道。我用這個語法在集成模式下注冊模塊。這不是問題。 – alisabzevari 2011-12-20 07:32:32

+0

@alisabzevari然後檢查IIS配置。無論如何,很難幫助你解決你的問題。 – 2011-12-20 08:53:57

相關問題