通过ClientBase自动生成的类重试SOAP策略?

时间:2014-12-16 11:47:00

标签: .net wcf soap

我有一个继承ClientBase的类TheServiceSoapClient,它最初是由Visual Studio 2012根据与基于SOAP的远程Web服务关联的WSDL自动生成的。

var myClient = new TheServiceSoapClient();
var r = myClient.GetSomething();  // unreliable, need retry policy

然而,远程服务不是很可靠,有时会失败,返回403错误代码,如403或500.我想实现一个重试策略,让我拦截错误的响应并重试。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

在不可靠的InvalidOperationException操作期间捕获GetSomething()异常,并在重试之前使用适当的延迟。

    retries = 0;  
    while (retries < retryLimit)
    {
       try
       {
           var r = myClient.GetSomething();
       }
       catch (InvalidOperationException exception)
       {
          retries++;
          System.Threading.Thread.Sleep(50);
       }
    }