我在一个常量循环中访问web服务但是在几次请求之后服务器返回503错误,我认为这可能是由重复的equest数量造成的。 (你会同意我的意见吗?)
我想做的是,根据以下链接问题,创建一个重试功能,尝试加载xml几次,每次尝试等待几秒钟。
"C# cleanest way to write retry logic?"
foreach (var item in ListofItems){
XDocument.Load(URL) //this returns
.... //handle xml data
}
上面的代码可能会返回描述的异常(503),我想重新定义在我链接到这篇文章的问题中定义为答案的扩展方法。
如果成功完成它应该从请求返回XmlDocument结果。
这是我的尝试。
static XDocument RetryXMLLoadAction(Action action, int numRetries, int retryTimeout)
{
if (action == null)
throw new ArgumentNullException("action"); // slightly safer...
do
{
try { XDocument result = action(); return result; }
catch
{
if (numRetries <= 0) throw; // improved to avoid silent failure
else Thread.Sleep(retryTimeout);
}
} while (numRetries-- > 0);
}