我有一个非常简单的WCF SOAP服务,它在每次调用时都会对DB进行一些更改并返回一些响应。我也使用ServiceChannel从我的客户端代码中调用它。
我想确保我的客户端代码不会在服务太忙时失败,因此如果发现异常,已经实现了Retry pattern来重试服务调用。但是,如果异常是由WCF服务器端的我的代码引起的(如果它与连接无关,或者无论如何执行了任何OperationContract代码),我都不想重试( 超时并不意味着它不是,对吧?))。
所以我想只在
时重试Microsoft文章(上面的链接)几乎没有关于 transient 的确切类型的异常类型的信息。我应该使用哪些异常类型来准确捕获我需要的内容?或者我应该如何过滤它们?
答案 0 :(得分:-1)
在您的WCF服务实现中,在您的操作合同中捕获在整个代码执行过程中发生的异常,并返回特定的FaultException,以通知您的客户端您的服务端代码已运行。可以放置一个特殊的故障代码或使用预定义的子字符串启动Fault Exception消息。在您的客户端,一旦发现故障异常,检查子字符串是否存在(或您在服务代码上设置的特定故障代码),如果存在这意味着您的服务端代码已运行,则无需重试你可以重试。您还可以捕获其他异常类型并重试。