c# - WCF - 检测响应中的错误

标签 c# wcf webservice-client

在 WCF 中我使用同步调用。

在响应中,连接断开。对于发送者来说这是可以的,他会遇到一些异常并且可以回滚他的操作。 但接收器怎么了?他成功地采取了有关网络调用的行动,但他不知道发送者的事情,接收者使他的工作不好[因为异常]。 接收方是否有可能检测到响应中发生了错误?

我需要一种模式来确保双方都正确了解服务调用的状态。 (背景是两个系统都有状态机,其中一个系统的更改也必须在另一个系统中实现,或者如果其中一个系统发生错误 - 听起来像分布式事务)

最佳答案

您应该考虑将所有服务操作纳入分布式事务中。

这将确保您在操作失败时,事务会跨服务边界回滚。因此,如果您在客户端回滚事务,它也会在服务器上自动回滚(反之亦然)。

创业文章:

  1. WCF Transaction Propagation.
  2. CodeProject sample.

虽然这看起来是一件很难掌握的事情,但它是非常值得付出努力的。它将大大简化您的错误处理逻辑。

注意:由于 WCF 事务实际上是 native 分布式事务(由 MSDTC 管理),您将从中获得额外的 yield 。这些事务将(可选)传播到 SQL Server(如果您使用 SQL Server),并且所有数据库操作将与您的服务操作位于同一事务中。

关于c# - WCF - 检测响应中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11202196/

相关文章:

c# - 为什么 GetRequestToken 不起作用?

c# - 从Silverlight客户端中的WCF获取更多错误详细信息

wcf - 通过附加到请求线程的安全主体访问声明,而不是 AuthorizationContext

wcf - 带有证书的程序化WCF消息安全性

c# - 从 HttpClient 到用户定义对象 C# 的 HttpResponseMessage

xml - 需要贵金属 API/Web 服务

javascript - 如何使用 React 应用程序将 ASP.NET Core Controller 操作 View 之一访问到 iframe 中?

c# - 如何在多个脚本的批处理中使用 Roslyn C# 脚本?

java - 如何使用 Java 调用 Web 服务

c# - 整数到整数数组 C#