1
我有一種將POST
請求發送到服務器的方法。 該請求在HttpRequestMessage
對象中定義。如何正確重試HttpRequestMessage?
然而,如果服務器返回一些重試的錯誤,我想再試,如下面的代碼所做的:
using (var request = new HttpRequestMessage(HttpMethod.Post, _endpoint))
{
var requestPayload = Serialize(ingestionRequest);
request.Content = new StringContent(requestPayload, Encoding.UTF8, JsonContentType);
await _retryPolicy.ExecuteAsync(async() =>
{
// ReSharper disable once AccessToDisposedClosure
using (var response = await _httpClient.SendAsync(request))
{
if (!response.IsSuccessStatusCode)
{
throw new IngestionException(response.StatusCode, response.ReasonPhrase);
}
}
});
}
事實證明,一個HttpRequestMessage
不能發送一次不止,拋以下例外:
請求消息已發送。無法多次發送相同的請求消息。
我怎麼能做到上面的代碼試圖做什麼 - ,同時保持代碼簡單和優雅?