0

我在一个恒定的循环中访问一个 web 服务,但是在几个请求之后,服务器返回一个 503 错误,我认为这可能是由重复请求的数量引起的。(你同意我的观点吗?)

我想做的是,根据下面的链接问题,创建一个重试函数,尝试多次加载 xml,每次尝试等待几秒钟。

“C# 编写重试逻辑的最简洁方式?”

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);
        }
4

0 回答 0