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

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

NHibernate.TransactionException: Transaction not connected, or was disconnected
   at NHibernate.Transaction.AdoTransaction.CheckNotZombied() in d:CSharpNHNHnhibernatesrcNHibernateTransactionAdoTransaction.cs:line 406
   at NHibernate.Transaction.AdoTransaction.Rollback() in d:CSharpNHNHnhibernatesrcNHibernateTransactionAdoTransaction.cs:line 240

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

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

3 ответов


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


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

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


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

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