2011-11-08 11 views
0

BeginRequestでセッションを開き、EndRequestでセッションを終了しようとしています。BeginRequestとEndRequestのNHibernateセッション処理

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) 

この質問Do ASP.NET Requests always BeginRequest and EndRequest on the same thread?によると、私はBeginRequestイベントとEndRequestのは、同じスレッドで発火することを確認することができません:私は散発的にこのようなエラーを見ています。私はこれらのエラーが発生しないように、NHibernateセッションのオープンとクローズをどのように扱うべきですか?

ありがとうございます!
Chris

答えて

0

IoCコンテナを使用する場合、コントローラコンストラクタでISessionを受け取ることができます。

私は通常、メソッドの属性を使用します。this

関連する問題