gpt4 book ai didi

c# - WCF msmq 事务处理和工作单元

转载 作者:IT王子 更新时间:2023-10-29 04:25:13 26 4
gpt4 key购买 nike

我构建了一个事务性的 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com