由于网络错误,WCF 异步方法失败

本文关键字:WCF 异步方法 失败 错误 于网络 网络 | 更新日期: 2023-09-27 18:33:04

我是WCF的新手。我很想知道关于异步方法的两件事:

  1. 当我向服务发送请求时,由于某种原因网络出现故障会发生什么?我得到任何类型的异常或类似的东西 k=类似的东西吗?

  2. 如果在服务尝试响应请求时网络出现故障,会发生什么情况?结果会丢失吗?

感谢您的帮助!

由于网络错误,WCF 异步方法失败

通过 TCP(包括 HTTP(向 WCF 发送消息要经历三个阶段:

  1. 客户端将消息发送到 WCF 服务
  2. 仅当成功接收到整个消息时,才会对其进行反序列化,并将其内容传递给相应的服务操作。服务操作将运行到完成。
  3. 响应(即您从服务操作返回或抛出的内容(被发送到客户端。

如果在 1. 期间连接丢失,则服务将看不到该消息,并且客户端将引发异常。

如果在 2.期间连接丢失,我认为( 但您可以轻松地模拟,例如使用 Thread.Sleep() (服务操作继续执行。

如果在 3. 期间连接丢失,则响应将丢失,但操作将运行。

如果服务没有响应,将引发异常。 程序将收到异常。您可以使用尝试...抓住块来抓住它。然后写入日志文件(如果要记录(。

根据我的经验,大多数情况下,第一个连接需要时间来初始化。有时我会EndpointNotFoundExceptionTimeoutException服务是否响应。

因此,我创建了一个通过将消息"连接">

传递给服务来初始化连接的方法,如果建立了连接,服务将向我返回一条"已连接"消息。否则,如果它返回异常,我将让它重试。

我设置了重试次数 = 5。因此,如果连接仍未建立,它将循环 5 次。一旦建立,它将继续进行下一个过程。

我们无法控制网络连接,我们不能期望以及哪个点,哪个部分失败。但是我们可以在服务失败时控制我们的程序。取决于在服务失败时要执行的操作。也许清理数据,重新启动进程或立即停止程序并记录错误以供调查。