作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我构建了一个事务性的 MSMQ WCF 服务。我在操作中使用了以下属性:
[OperationBehavior(TransactionScopeRequired = true, TransactionAutoComplete = true)]
我在服务中使用 Nhibernate。使用 Nhibernate 我在我的 session 中提交了一个提交。如果我禁用 Nhibernate 提交,消息将被正确处理并从队列中删除。通过这次提交,Nhibernate 事务正常进行,但我的消息进入重试队列。
这是我进入 Nhibernate 服务跟踪的异常。
Description Handling an exception. Exception details: System.Transactions.TransactionAbortedException: The transaction has aborted. ---> System.ObjectDisposedException: Cannot access a disposed object.
Object name: 'Transaction'.
at System.Transactions.Transaction.DependentClone(DependentCloneOption cloneOption)
at System.Transactions.TransactionScope.SetCurrent(Transaction newCurrent)
at System.Transactions.TransactionScope.PushScope()
at System.Transactions.TransactionScope.Initialize(Transaction transactionToUse, TimeSpan scopeTimeout, Boolean interopModeSpecified)
at System.Transactions.TransactionScope..ctor(Transaction transactionToUse, TransactionScopeAsyncFlowOption asyncFlowOption)
at System.Transactions.TransactionScope..ctor(Transaction transactionToUse)
at NHibernate.Transaction.AdoNetWithDistributedTransactionFactory.DistributedTransactionContext.System.Transactions.IEnlistmentNotification.Prepare(PreparingEnlistment preparingEnlistment)
--- End of inner exception stack trace ---
at System.Transactions.TransactionStatePromotedAborted.PromotedTransactionOutcome(InternalTransaction tx)
at System.Transactions.TransactionStatePromotedEnded.EndCommit(InternalTransaction tx)
at System.Transactions.CommittableTransaction.Commit()
at System.ServiceModel.Dispatcher.TransactionInstanceContextFacet.Complete(Transaction transaction, Exception error)
nhibernate 提交似乎破坏了 WCF 上的事务。我找不到解决此问题的方法。
任何帮助都将不胜感激
最佳答案
我不太熟悉这些系统,但最简单的答案通常是正确的,所以我会试一试 - 猜测一下,我会说无论您将这些项目调用到什么服务是在有机会删除项目之前停止删除项目的过程,因此我会在您调用项目的服务中添加某种函数调用,以便在它完成之前强制从列表中删除项目交易。
当然,我不熟悉这个主题,所以不要相信我的话 - 这只是我在编程知识范围内遇到类似问题时通常会做的事情。
关于c# - WCF msmq 事务处理和工作单元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23415497/
我是一名优秀的程序员,十分优秀!