2011-12-19 15 views
2

私はNHibernateセッションプロバイダであるHttpModuleを書いています。単にHttpModuleのInitメソッドでSessionFactoryを開き、BeginRequestで新しいSessionを取得し、EndRequestでそれを閉じます。反対側では、GetDataという名前のこのHttpModuleからのセッションを使用するGlobal.asaxでメソッドを書きました。 Global.asaxのInitメソッドでそのメソッド(GetData)を実行します。問題は、統合モードでHttpModuleを使用すると、HttpModuleがGlobal.asaxのInitメソッドを実行する前に初期化されていないように見えることです。HttpModule InitメソッドをASP.NET統合モードで実行すると、

私はこれらのメソッドの実行順序とイベントのライフサイクルを検索しましたが、何も役立ちませんでした。

答えて

2

ASP.NETはHttpModuleを初期化()メソッドは(ない静的初期化子とは違って)互いに対して呼び出されたときに保証するものではありません。一般に、Init()メソッドはイベントハンドラをワイヤリングするために使用する必要があり、イベントハンドラでは「実際の作業」を実行する必要があります。

特定のイベントのすべての登録済みイベントハンドラは、Global.asaxを含むすべてのHttpModuleから呼び出され、次のイベントに移動します。

3

IIS 7.xでは、モジュールとハンドラは、web.configファイルのsystem.webServer xml要素内に登録する必要があります。

チェックこのMSDNの記事:

+0

私はそれを知っています。私はモジュールを統合モードで登録するためにこの構文を使用しました。それは問題ではありません。 – alisabzevari

+0

@alisabzevari次に、IIS設定をチェックします。とにかく、あなたの質問の情報を取るあなたを支援することは難しい... –

関連する問題