NHibernateexception:事务未连接或已断开连接

在我们的开发环境中,所有ASP.NET应用程序都运行良好。 但是,当我在测试机器上部署站点时,在某些页面上我得到了以下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 

我不知道如何解决这个问题。 唯一的区别是数据库版本:开发:10.0.5500(2008 R2,SP1,Express)测试:10.0.5500(2008,SP3)

有人知道这里发生了什么吗?

您的每个请求的会话模式实现存在问题。 ASP.NET是multithreading的,当线程终止时会关闭会话,而不是在请求结束时关闭。 有很多关于如何管理每个请求的会话的例子 ,NHibernate有一个内置的NHibernate.Context.WebSessionContext,但我更喜欢使用dependency injection框架,比如Ninject 。

这是一个评论,但我也有同样的问题。

当触发器导致数据库级exception时,可能会发生此错误。 这将导致事务回滚,因此exception。

另一个问题可能是用户安全性(再次出现数据库级exception)。 在我的情况下,底层数据库问题是:

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