[英]WCF Async methods failure because of bad network
我是WCF新手。 我很想知道关于异步方法的两件事:
当我向服务发送请求时,由于某种原因网络出现故障会发生什么? 我是否会遇到任何类型的异常或类似的东西?
如果网络在服务尝试响应请求时出现故障,会发生什么? 结果会丢失吗?
谢谢您的帮助!
通过TCP(包括HTTP)向WCF发送消息通过三个阶段变得粗糙:
如果连接在1.期间丢失,则您的服务将看不到该消息,并且您的客户端将抛出异常。
如果连接在2.期间丢失, 我认为 (但您可以轻松地模拟,例如使用Thread.Sleep()
)服务操作继续执行。
如果连接在3.期间丢失,则响应将丢失,但操作将运行。
如果服务没有响应,将抛出异常。 该程序将收到例外。 你可以使用try ... catch块来捕获它。 然后写入日志文件,如果你想记录它。
根据我的经验,大多数第一个连接需要时间来初始化。 有时,如果服务dint响应,我会收到EndpointNotFoundException
或TimeoutException
。
因此,我创建了一种方法来通过将消息“连接”传递给服务来初始化连接,如果建立连接,服务将返回一个“连接”消息。 否则,如果它返回异常,我将让它重试。
我设置重试次数= 5.如果连接仍未建立,它将循环5次。 一旦建立,它将继续进行下一个过程。
我们无法控制网络连接,我们无法期待和哪一点,它失败了哪一部分。 但是我们可以在服务失败时控制我们的程序。 如果服务失败,取决于您想要做什么。 也许清理数据,重启过程或立即停止程序并记录错误进行调查。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.