BeginRequest和EndRequest上的NHibernate会话处理

BeginRequest和EndRequest上的NHibernate会话处理,nhibernate,thread-safety,Nhibernate,Thread Safety,我正在BeginRequest上打开一个会话,并试图在EndRequest上关闭它。我偶尔会看到这样的错误: Possible nonthreadsafe access to session at NHibernate.Action.EntityDeleteAction.Execute() at NHibernate.Engine.ActionQueue.Execute(IExecutable executable) at NHibernate.Engine.ActionQueue.Exec

我正在BeginRequest上打开一个会话,并试图在EndRequest上关闭它。我偶尔会看到这样的错误:

Possible nonthreadsafe access to session
at NHibernate.Action.EntityDeleteAction.Execute() 
at NHibernate.Engine.ActionQueue.Execute(IExecutable executable) 
at NHibernate.Engine.ActionQueue.ExecuteActions(IList list) 
at NHibernate.Engine.ActionQueue.ExecuteActions() 
at NHibernate.Event.Default.AbstractFlushingEventListener.PerformExecutions(IEventSource session) 
at NHibernate.Event.Default.DefaultFlushEventListener.OnFlush(FlushEvent event) 
at NHibernate.Impl.SessionImpl.Flush() 
at ACC.Web.Modules.NHibernateSessionModule.CommitSession(ISession session) 
at ACC.Web.Modules.NHibernateSessionModule.ApplicationEndRequest(Object sender, EventArgs e) 
at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
根据这个问题,我不能确定BeginRequest和EndRequest是否会在同一个线程上触发。我应该如何处理打开和关闭NHibernate会话以避免出现这些错误

谢谢

Chris

如果您使用任何IoC容器,您可以在控制器构造函数上接收ISession

我通常在方法上使用属性,比如