現在、私はこの要求を持っています:
await url
.SetQueryParams(queryString)
.SetClaimsToken()
.GetJsonAsync<T>()
Polly ( https://github.com/App-vNext/Polly ) の使用を開始して、再試行を処理し、より優れたユーザー エクスペリエンスを提供したいと考えています。たとえば、ネットワーク接続が悪いために最初の試行でユーザーに「電話を切る」ことはありません。これは私が使用しようとしていた例です:
int[] httpStatusCodesWorthRetrying = { 408, 500, 502, 503, 504 };
Policy
.Handle<HttpException>()
.OrResult<HttpResponse>(r => httpStatusCodesWorthRetrying.Contains(r.StatusCode))
.WaitAndRetryAsync(new[] {
TimeSpan.FromSeconds(1),
TimeSpan.FromSeconds(2),
TimeSpan.FromSeconds(3)
})
.ExecuteAsync( await url... )
HttpResponse
ただし、戻り型である必要があります。私の Flurl の例からわかるように、 .T
であるにもかかわらず を返していHttpResponse
ます。はT
、 を逆シリアル化するために使用される型StringContent
です。
この最初の例は、PCL 内で使用していて、そこへの参照を取得できないため、まったく機能しませんSystem.Web
。だから私はこれを試しました:
Policy
.HandleResult(HttpStatusCode.InternalServerError)
.OrResult(HttpStatusCode.BadGateway)
.OrResult(HttpStatusCode.BadRequest)
.WaitAndRetryAsync(new[] {
TimeSpan.FromSeconds(1),
TimeSpan.FromSeconds(2),
TimeSpan.FromSeconds(3)
})
.ExecuteAsync(async () =>
{
await url...
});
HttpStatusCode
ただし、Polly は戻り値の型を想定しているため、これも機能しません。だから私の質問は次のとおりです: polly にこれらHttpStatusCode
の s を処理し、 type の戻りを許可するように指示するにはどうすればよいT
ですか?