我是WCF的新手。我很想知道关于异步方法的两件事:
当我向服务发送请求时,由于某种原因网络出现故障会发生什么?我是否会遇到任何类型的异常或类似的东西?
当服务尝试响应请求时网络出现故障会怎样?结果会丢失吗?
感谢您的帮助!
答案 0 :(得分:2)
通过TCP(包括HTTP)向WCF发送消息将分为三个阶段:
如果在1期间连接丢失,您的服务将看不到该消息,您的客户端将抛出异常。
如果在2.期间连接丢失,我认为(但您可以轻松地模拟它,例如使用Thread.Sleep()
),服务操作将继续执行。
如果在3.期间连接丢失,响应将丢失,但操作将会运行。
答案 1 :(得分:2)
异常。该程序将收到例外。 你可以使用try ... catch块来捕获它。然后写入日志文件,如果你想记录它。
根据我的经验,大多数第一个连接需要时间来初始化。
有时,如果服务提示响应,我会得到EndpointNotFoundException
或TimeoutException
。
因此,我创建了一种通过将消息“连接”传递给服务来初始化连接的方法,如果连接建立,服务将返回“连接”消息。 否则,如果它返回异常,我将让它重试。
我设置了重试次数= 5.如果连接仍未建立,它将循环5次。一旦建立,它将继续进行下一个过程。
我们无法控制网络连接,我们无法预料到哪一点,哪一部分失败了。 但是我们可以在服务失败时控制我们的程序。如果服务失败,取决于您想要做什么。也许清理数据,重启过程或立即停止程序并记录错误进行调查。