我在ASP.NET應用程序中使用Spring.NET 1.3.2,NHibernate 3.1和OSIV模式。Spring.NET + NHibernate +請求作用域對象不能很好地協作
我有一個自定義EventListener
需要進行要求範圍的,因爲它使用 HttpContext.Current.Items作爲構造依賴。
由於ISession
也是請求作用域,我應該能夠使用Spring.NET來管理這些依賴關係。
的問題是,EventListener
,像IInterceptor
,是作爲不請求範圍(這是一個單)的ISessionFactory
一個屬性。 Web對象作用域之間的不匹配是有問題的。
我試過下面的XML代碼片段,但是條件表達式總是返回null。我認爲這是由於Spring在應用程序級別範圍內創建了EventListener
對象,並且在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
對象春,使其產生在每個請求的基礎必須發生EventListener
實例下旬足夠請求生命週期,以便HttpContext.Current.Items ['Princpial']已由自定義IHttpModule填充的
EventListener
實例被注入到當前OSIVISession