我在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