如果我的代码无法连接C#中的web服务,我应该如何尝试3次?

如果我的代码无法连接C#中的web服务,我应该如何尝试3次?,c#,web-services,robustness,C#,Web Services,Robustness,这是我的密码: FtpWebRequest reqFTP; reqFTP = (FtpWebRequest)FtpWebRequest.Create(Constant.IP); reqFTP.Credentials = new NetworkCredential(UserName, Password); reqFTP.Method = WebRequestMethods.Ftp.ListDirectory; response = (FtpWebResponse)reqFTP.GetRespons

这是我的密码:

FtpWebRequest reqFTP;
reqFTP = (FtpWebRequest)FtpWebRequest.Create(Constant.IP);
reqFTP.Credentials = new NetworkCredential(UserName, Password);
reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;
response = (FtpWebResponse)reqFTP.GetResponse();
Stream responseStream = response.GetResponseStream();
reader = new StreamReader(responseStream);
如果我的代码无法连接,我想尝试连接到web服务。只有3次之后,我才想放弃

我该怎么试


我正在考虑
尝试catch
并计算失败时间,但我认为会有更好的解决方案。

将代码封装在循环中,如果没有异常,则返回或中断

int faultCounter=0;
int faultCounter = 0;
bool faulted;
do {
  faulted = false;
  try {
    // perform service operation
  } catch {
    faultCounter++;
    faulted = true;
  }
} while (faulted && faultCounter < 3);
布尔断层; 做{ 错误=错误; 试一试{ //执行服务操作 }抓住{ faultCounter++; 错误=正确; } }while(故障和故障计数器<3);
这是一个示例实现,您仍然可以为
DontRetryMeException
添加代码。这样的异常不存在,并且没有指示哪些异常应该避免重试。开场白没有这样的要求,所以我回答了这个问题。你说得对,我不是故意想回答这个问题,而是故意的。其他人已经注意到了这一点。他们是什么类型的webserives??sharepoint或??这是FTP,不是web服务。另外,除非您知道连接失败的原因,否则不要重试。哦,是的,很抱歉。这是ftp。我的老板告诉我,如果失败了,就试三次。所以我必须尝试一下。有什么办法可以同时尝试ftp和web服务吗?你的老板告诉你的话听起来并不是技术决策的好依据。如果错误是由于错误的凭据造成的,该怎么办?您不应该重试三次-用户可能希望尽快获得该信息。即使您的凭证是硬编码的,重试也很可能无法纠正这种情况。