Spring.NET 1.3.2、NHibernate 3.1、および ASP.NET アプリケーションで OSIV パターンを使用しています。
HttpContext.Current.Items をコンストラクターの依存関係として使用するため、リクエストEventListener
スコープが必要なカスタムがあります。
ISession
もリクエストスコープであるため、Spring.NET を使用してこれらの依存関係を管理できるはずです。
問題は 、 が のEventListener
ように、リクエスト スコープではないIInterceptor
(シングルトンである)プロパティであることです。Web オブジェクト スコープ間の不一致は問題です。ISessionFactory
次の XML スニペットを試しましたが、条件式は常に null になります。EventListener
これは、Springがアプリケーション レベルのスコープでオブジェクトを作成したためだと思いますが、以前HttpContext.Current.Items
はデータが取り込まれる可能性がありました。
<object id="EventListener" scope="request" type="MyEventListener,DAL">
<constructor-arg index="0" expression="T(System.Web.HttpContext).Current.Items.Contains('Principal')?T(System.Web.HttpContext).Current.Items['Principal']:null"/>
</object>
だから私の要件は次のとおりです。
リクエストごとに
EventListener
作成されるように、Spring でカスタム オブジェクトを構成するEventListener
HttpContext.Current.Items['Princpial'] がカスタム IHttpModule によって設定されるように、インスタンス化は要求ライフサイクルの十分に遅い時間に発生する必要があります。EventListener
インスタンスは現在の OSIV に挿入されますISession