13

在我们的开发环境中,所有 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)

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

4

3 回答 3

32

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

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

于 2014-03-13T23:34:14.167 回答
6

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

于 2013-04-08T12:43:20.990 回答
0

另一个问题可能是用户安全(又是数据库级别的异常)。在我的情况下,潜在的数据库问题是:

The server principal "AppUser" is not able to access the database "AppDB" under the current security context.
于 2016-03-24T17:13:42.093 回答