[英]NHibernate session closing unexpectedly
我為我的Web應用程序使用了MVC4,C#,Castle Windsor,fluentnhibernate堆棧,通常效果很好。
偶爾我會收到與nHibernate相關的錯誤,類似於:
關閉閱讀器后,嘗試調用Read的嘗試無效。
要么
內部連接致命錯誤。
當我連續打多個電話時,這通常會抬起頭來。
目前,我正在從JQuery執行多個ajax獲取時復制它。
我懷疑問題出在我的NHibernate會話管理中。
我唯一能想到的是,這些呼叫是使用同一會話的某人,第一個呼叫完成並關閉它,然后下一個呼叫無法完成。
由於我的會話是這樣處理的,因此這不可能:
Kernel.Register(
Component.For<ISessionFactory>()
.UsingFactoryMethod(_ => config.BuildSessionFactory()),
Component.For<ISession>()
.UsingFactoryMethod(k => k.Resolve<ISessionFactory>().OpenSession())
.LifestylePerWebRequest());
每個請求應該一次會話嗎?
還有什么方法,或者在其他地方可以找到問題? 我很困。
幾分鍾后當然解決了這個問題,但答案讓我大開眼界。
這個答案使我走上了正確的道路。
雖然我所有的存儲庫,管理器和其他層都使用Castle Windsor進行了正確的生活方式安裝,但其中沒有一個。
我正在從ActionFilter進行存儲庫調用,我所有的動作過濾器都是通過ActionInvoker類調用的,該類被錯誤地注冊為Singleton,這導致了我的錯誤。
container.Register(Component.For<IActionInvoker>()
.ImplementedBy<WindsorActionInvoker>()
.LifeStyle.***Singleton***);
當然應該
container.Register(Component.For<IActionInvoker>()
.ImplementedBy<WindsorActionInvoker>()
.LifeStyle.Transient);
另一個提醒是要更加注意那些生活方式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.