我在我的 asp.net mvc 应用程序中连接了 NHibernate。
一切正常,如果我不处置 ISession。但是,我已经读过您应该处理,但是当我这样做时,我会随机出现“会话已关闭”异常。
我正在使用 Windsor 将 ISession 注入到我的其他对象中。
这是我目前的NHModule:
public class NHibernateHttpModule : IHttpModule
{
public void Init(HttpApplication context)
{
context.BeginRequest += context_BeginRequest;
context.EndRequest += context_EndRequest;
}
static void context_EndRequest(object sender, EventArgs e)
{
CurrentSessionContext.Unbind(MvcApplication.SessionFactory);
}
static void context_BeginRequest(object sender, EventArgs e)
{
CurrentSessionContext.Bind(MvcApplication.SessionFactory.OpenSession());
}
public void Dispose()
{
// do nothing
}
}
注册 ISession:
container
.Register(Component.For<ISession>()
.UsingFactoryMethod(() => MvcApplication.SessionFactory.GetCurrentSession()).LifeStyle.Transient);
当我在模块中的 unbind 上添加 Dispose 时会发生错误。由于我不断收到会话已关闭错误,我认为这不是正确的方法,那么正确的方法是什么?
谢谢,乔