2010-03-31 63 views
2

我從NHibernate的獲取folloinwg錯誤:NHibernate異常「Session is closed!對象名稱:'ISession'。」

System.ObjectDisposedException: Session is closed! Object name: 'ISession'. 
    at NHibernate.Impl.AbstractSessionImpl.ErrorIfClosed() 
    at NHibernate.Impl.AbstractSessionImpl.CheckAndUpdateSessionStatus() 
    at NHibernate.Impl.SessionImpl.FireSave(SaveOrUpdateEvent event) 
    at NHibernate.Impl.SessionImpl.Save(Object obj) 
我在.net中的Windows服務使用NHibernate


我無法追查異常的問題。這種異常經常發生。
任何人都可以幫助我解決這個問題嗎?


NRK

+0

是的..我打開連接。其實我正在做一個文件導入應用程序,因爲我正在進行批處理記錄插入(200)與會議和委託會議,這些記錄也可以在數據庫中,但2或3批次後,它給這個例外。我無法弄清楚。 – nRk 2010-03-31 12:28:50

回答

2

由於錯誤說 - 它看起來像你想,當你的ISession被關閉,以節省的對象。你確定你打開它嗎?或者它可能被過早關閉了?

更新: 您是否檢查過NHibernate日誌?

+0

看起來類似,但是使cascading = none解決了這個問題。 – nRk 2010-05-13 05:09:51

+0

很高興你有它的工作。如果我是你,我一定會看看nhibernate log4net日誌,或許可以獲得更多信息,請參閱:http://stackoverflow.com/questions/743323/nhibernate-enabling- log4net – UpTheCreek 2010-05-13 05:28:08

+0

那些NHibernate日誌是在哪裏? – vapcguy 2014-09-16 20:44:36

6

我猜你正在使用構造不止一次地包裝你的會話,像下面的東西。你可以發佈一些會話使用代碼嗎?

HTH,
Berryl

錯誤 - 在會議閉幕之後第一,以構建:它的工作完成後

using(var session = _sessionFactory.GetCurrentSession() 
using(var tx = _session.BeginTransaction(){ 
    ... do something 
    tx.Commit(); 
} 


using(var session = _sessionFactory.GetCurrentSession() 
using(var tx = _session.BeginTransaction(){ 
    ... do something else 
} 

更好 - 會話關閉

var session = _sessionFactory.GetCurrentSession(); 

using(var tx = _session.BeginTransaction(){ 
    ... do something 
    tx.Commit(); 
} 


using(var tx = _session.BeginTransaction(){ 
    ... do something else 
    tx.Commit() 
} 
session.Close() 
0

我們有同樣的問題。將App Pool Managed Pipeline更改爲Classic爲我們解決了這個問題。

相關問題