我有NHibernate挂在我的asp.net mvc应用程序。如何在ASP.NET MVC应用程序中部署NHibernate ISession
一切工作正常,如果我不处置ISession。不过,我已经读过,你应该处置,但是当我这样做时,我会随机获得“Session is closed”异常。
我正在将ISession注入到Windsor的其他对象中。
这是我目前的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);
当我钉的Dispose在模块中取消绑定错误发生。由于我不断收到会话是关闭错误,我认为这不是正确的方式来做到这一点,那么正确的方法是什么?
谢谢, 乔