NHibernate异常:事务未连接或已断开连接

时间:2013-04-08 11:59:16

标签: c# asp.net-mvc-3 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)

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

3 个答案:

答案 0 :(得分:29)

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

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

答案 1 :(得分:5)

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

答案 2 :(得分:0)

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

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