所以我在解决这个问题的方法之后一直在寻找疯子,但我似乎无法找到答案。
所以,我需要在C#中向POST
发送一个HTTPClient
请求到服务器,如果服务器没有运行,它将继续发送请求,直到它连接(或死掉)经过一段时间的尝试)。但是我总是得到异常System.Net.Http.HttpRequestException
,如果我只是存储它(或其他东西)并再试一次就不会有问题。
我找到了一些人们尝试这样做的方法,而且我已经尝试过所有这些方法。创建一个循环并捕获程序抛出的异常的for-loop
,添加到计数器并再次尝试。创建一个循环到while-loop
的{{1}}。如果无法连接,我甚至会重新启动程序(是的,我绝望了)。
所以,我必须看看你们中是否有人可能有解决这个问题的方法,或者你是否有更好的方法来解决这个问题。 这是运行的代码,感谢您的帮助! 编辑:只是为了增加一些清晰度,在" rep" -variable中抛出异常,代码永远不会超过该变量。我已经尝试将HTTPResponseMessage变量设为" var"并等待Postasync方法。
HttpResponseMessage.IsSuccessStatusCode == true
答案 0 :(得分:0)
您必须查找重试库for example Polly
var policy = Policy
.Handle<HttpRequestException>()
.WaitAndRetry(_retryCount, retryAttempt =>
TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)));
policy.Execute(() => DoSomething());
答案 1 :(得分:0)
解决方案可能是:
bool success = false;
while (!success)
{
var rep = new HttpResponseMessage();
try
{
rep = client.PostAsync("https://localhost:9999/", content).Result;
//No exception here. Check your condition and set success = true if satisfied.
}
catch (Exception e)
{
//Log your exception if needed
}
}