在我们的开发环境中,所有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)
有人知道这里发生了什么吗?
答案 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.