簡體   English   中英

NHibernate會話意外關閉

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM