繁体   English   中英

由于网络不良,WCF异步方法失败

[英]WCF Async methods failure because of bad network

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

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

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

谢谢您的帮助!

通过TCP(包括HTTP)向WCF发送消息通过三个阶段变得粗糙:

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

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

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

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

如果服务没有响应,将抛出异常。 该程序将收到例外。 你可以使用try ... catch块来捕获它。 然后写入日志文件,如果你想记录它。

根据我的经验,大多数第一个连接需要时间来初始化。 有时,如果服务dint响应,我会收到EndpointNotFoundExceptionTimeoutException

因此,我创建了一种方法来通过将消息“连接”传递给服务来初始化连接,如果建立连接,服务将返回一个“连接”消息。 否则,如果它返回异常,我将让它重试。

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

我们无法控制网络连接,我们无法期待和哪一点,它失败了哪一部分。 但是我们可以在服务失败时控制我们的程序。 如果服务失败,取决于您想要做什么。 也许清理数据,重启过程或立即停止程序并记录错误进行调查。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM