问题描述
这实际上不是一个问题。而是为遇到同样问题的任何人提供的答案,因为我花了 2 天时间才弄清楚出了什么问题。
场景:我们有一个事务性 MSMQ 队列,我们通过 WCF 使用 TransactionScopeRequired = true,TransactionAutoComplete = true
当收到一条消息时,它会在我们的代码中正常处理而不会出错,但随后消息的“AbortCount”会增加,并根据您的 MSMQ 绑定配置将其发送到重试队列或中毒队列。我们的代码中没有抛出任何错误,应该已成功处理。
以下异常发生在任何开发者代码之外,并且仅在“仅我的代码”被禁用时才会出现。
传输通道检测到有害消息。发生这种情况是因为邮件超过了最大传递尝试次数,或者因为通道检测到邮件存在根本问题。内部异常可能包含附加信息。
结果发生在我的消息处理代码中,我开始了一个数据库事务,然后既没有提交它(由于没有更改)也没有回滚它(错误地)。这导致环境 WCF 事务检测到一个中止的事务并回滚。
解决方案:如果您没有提交交易,不要只是处理它!所有事务都必须提交或回滚。这对某些人来说可能很明显,但你不知道你不知道什么。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)