Подтвердить что ты не робот

Исключение NHibernate: транзакция не была связана или была отключена

В нашей среде разработки все приложения ASP.NET работают отлично. Однако, когда я развертываю сайт на тестовой машине, на некоторых страницах я получаю это исключение:

NHibernate.TransactionException: Transaction not connected, or was disconnected
   at NHibernate.Transaction.AdoTransaction.CheckNotZombied() in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Transaction\AdoTransaction.cs:line 406
   at NHibernate.Transaction.AdoTransaction.Rollback() in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Transaction\AdoTransaction.cs:line 240

Я не знаю, как решить эту проблему. Единственная разница в версиях БД: Разработка: 10.0.5500 (2008 R2, SP1, Express) Тест: 10.0.5500 (2008, SP3)

Есть ли у кого-то идея, что здесь происходит?

4b9b3361

Ответ 1

Проблема с вашей реализацией шаблона сеанса за запрос. ASP.NET многопоточен, и сеанс закрывается, когда поток завершается, а не когда заканчивается запрос. Есть много примеры о том, как управлять сеансом за запрос, и NHibernate имеет встроенный NHibernate.Context.WebSessionContext, но я предпочитаю использовать инфраструктуру внедрения зависимостей, например Ninject.

Ответ 2

Это был комментарий, но у меня была такая же проблема.

Эта ошибка может возникать, когда триггер вызывает исключение уровня базы данных. Это приведет к откату транзакции и исключению.

Ответ 3

Еще одной проблемой может быть безопасность пользователя (опять-таки исключение уровня базы данных). В моем случае основная проблема БД была:

The server principal "AppUser" is not able to access the database "AppDB" under the current security context.