NHibernate exception: Transaction not connected, or was disconnected

醉酒当歌 提交于 2020-01-01 08:21:35

问题


In our develop environment all the ASP.NET application works just fine. However, when I deploy the site on the test machine, on some pages I get this exception:

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

I have no idea on how to solve this issue. The only difference are the DB versions: Develop: 10.0.5500 (2008 R2, SP1, Express) Test: 10.0.5500 (2008, SP3)

Does someone has an idea what is going on here?


回答1:


There's a problem with your session-per-request pattern implementation. ASP.NET is multi-threaded and the session is being closed when a thread terminates instead of when the request ends. There are many examples of how to manage session-per-request and NHibernate has a built in NHibernate.Context.WebSessionContext but I prefer to use a dependency injection framework such as Ninject.




回答2:


This was a comment, but I had the same issue as well.

This error can occur when a trigger causes a database level exception. This will cause the transaction to be rolled back hence the exception.




回答3:


Another problem could be the user security (a database level exception again). In my case the underlying DB problem was:

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


来源:https://stackoverflow.com/questions/15878493/nhibernate-exception-transaction-not-connected-or-was-disconnected

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!