我的应用程序启动方法中包含以下代码 设置容器和工厂支持的代码。工厂 方法似乎只调用一次而不是每次调用会话 需要。
_container.Kernel.Register(
Component.For<ISession>().LifeStyle.Transient
.UsingFactoryMethod(() =>
{
//Any line of code will only be hit once the first time ISession is requested.
}));
我最初使用的是来自主干的build 1509,但是更新后用它来构建1548 同样的结果。如果您需要更多信息,请告知我们 我
注意:这是交叉发布到城堡邮件列表等待批准。
注2:此代码适用于最新版本的windsor。但是,我们正在使用trunk构建,因为我们需要changeset 5927(由mausch于2009年8月13日创建)的功能。
请参阅:
答案 0 :(得分:2)
为什么你没有为这个组件使用PerWebRequest生命周期,或者更好的是Windsor的NHibernate集成工具呢?
现在回到真正的问题。
您的代码无效,因为它有错误。您没有将引用存储在当前的HttpContext中。您将引用存储在HttpContext中,该引用对您传递给的委托的第一次调用是最新的。匿名委托(或包含它的匿名类)存储对第一个HttpContext实例的引用,因此只有在第一次请求到达时,if
条件才会为false。