我正在檢查一些似乎會拋出的代碼
System.Net.Sockets.SocketException:現有連接有時被遠程主機強行關閉。
我們使用 Polly 庫來自動重試 HttpClient 請求。
- 我開始懷疑這是否與
HttpClient.PostAsync下面沒有等待有關? - 這會導致任何連接耗盡嗎?
任何指導將不勝感激。
var payload = JsonConvert.SerializeObject(data);
var response = await _pollyPolicy.ExecuteAsync(() => _httpClient.PostAsync(_endpoint, new StringContent(payload, Encoding.UTF8, "application/json")));
與我“認為”它應該是什么相比(注意async await添加):
var payload = JsonConvert.SerializeObject(data);
var response = await _pollyPolicy.ExecuteAsync(async () => await _httpClient.PostAsync(_endpoint, new StringContent(payload, Encoding.UTF8, "application/json")));
uj5u.com熱心網友回復:
您在此處顯示的兩個代碼塊實際上是相同的。在內部,Pollyawait無論如何都會委托,并且awaita 上的多個sTask沒有任何影響。
但是,如果您只是使用 Polly 進行彈性 HTTP 呼叫HttpClient,那么我會考慮使用庫本身來處理它。這里有例子https://docs.microsoft.com/en-us/dotnet/architecture/microservices/implement-resilient-applications/implement-http-call-retries-exponential-backoff-polly
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/404858.html
標籤:
上一篇:無法跟蹤物體型別“x”的實體,因為已在跟蹤另一個具有鍵值“{Id:6}”的實體
下一篇:添加身份驗證時出現無限回圈
