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?
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.
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.
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.