NHibernate исключение "Сессия закрыта! Имя объекта: 'ISession'." - PullRequest
2 голосов
/ 31 марта 2010

Я получаю ошибку folloinwg от NHibernate:

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)

Я использую NHibernate в .net windows service.
Я не могу отследить точную проблему для исключения. Это исключение встречается очень часто.
Кто-нибудь может помочь мне исправить это исключение?


NRK

Ответы [ 3 ]

6 голосов
/ 31 марта 2010

Я предполагаю, что вы заключаете свой сеанс в конструкцию using более одного раза, что-то вроде ниже Можете ли вы опубликовать часть вашего кода использования сеанса?

НТН,
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()
2 голосов
/ 31 марта 2010

Как говорит ошибка - похоже, что вы пытаетесь сохранить объект, когда ваша ISession закрыта. Вы уверены, что открываете его? Или, возможно, он закрывается преждевременно?

Обновление: Вы проверяли журналы NHibernate?

0 голосов
/ 20 сентября 2014

У нас была такая же проблема. Изменение Управляемого конвейера пула приложений на Классический решило это для нас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...