C# WCF客户端调用正在获取ThreadAbortedException
我有一个调用服务的WCF客户端,目前我们已将超时设置为2分钟 一旦达到超时,我们将在catch中处理它 在catch中,我们检查连接是否出现故障,如果出现故障,我们将创建一个新客户端,然后再次调用请求,我们将执行3次。一旦达到重试次数,我们将关闭客户端 代码看起来像C# WCF客户端调用正在获取ThreadAbortedException,c#,wcf,C#,Wcf,我有一个调用服务的WCF客户端,目前我们已将超时设置为2分钟 一旦达到超时,我们将在catch中处理它 在catch中,我们检查连接是否出现故障,如果出现故障,我们将创建一个新客户端,然后再次调用请求,我们将执行3次。一旦达到重试次数,我们将关闭客户端 代码看起来像 public object CallWebMethod(string webMethodName, oject Request)` { response = Client.GetData(request); } Catch
public object CallWebMethod(string webMethodName, oject Request)`
{
response = Client.GetData(request);
}
Catch (Exception ex)
{
if(retry<4)
{
if(Client!=null && Client.State == CommunicationState.Faulted)
{
Client = new Client();
}
response = CallWebMethod(webmethodname, request);
}
}
finally
{
if(Client!=null)
{
Client.Close();
}
}
公共对象CallWebMethod(字符串webMethodName,项目请求)`
{
response=Client.GetData(请求);
}
捕获(例外情况除外)
{
if(retryPradeep,我不认为您正在采取的方法(递归对wcf web服务的方法调用)这就是你想要做的。首先,如果客户端超时,web服务连接出现故障,主机上会发生灾难性的事情,因此,仅仅启动一个新请求不会有什么帮助。你最好在两个请求之间延迟一到两分钟,让web服务有时间从发生的任何事情中恢复过来。哟您也可以使用一些简单的方法,例如对web服务的ping请求/响应,以确保它在再次点击之前实际运行。嗨,Brian,感谢您的快速响应。我理解您所指的要点,但我需要知道异常线程何时会中止是在第一个请求的响应重叠时发生的吗第二个请求?Net将如何处理这种情况?现在我通过添加Client.Abort();
Client=new Client()来处理这个问题
在进行新调用之前,此更改到目前为止也是徒劳的。我想我的观点是,如果请求相同,客户端不应该有重叠的请求。它们应该以串行方式运行,而不是并行方式运行,除非请求不同。好的,谢谢Brian,这帮助了我。我也很高兴我得到了解决方案,线程中止已经到期o Http超时异常,默认情况下设置为110秒,一旦我得到更新,它就会像charm一样工作:)