我正在使用 Polly 并IHttpClientFactory
处理我的容错,这对于 .NET Core 3.1 中的重试和断路器工作正常
我没有尝试处理任何可以在控制器中执行的 401,但我找不到从 StartUp 刷新令牌的方法
这是我在启动时的政策
IAsyncPolicy<HttpResponseMessage> httpWaitAndRetryPolicy =
Policy.HandleResult<HttpResponseMessage>(r => !r.IsSuccessStatusCode)
.WaitAndRetryAsync(3, sleepDurationProvider: retryAttempt => TimeSpan.FromSeconds(retryAttempt),
onRetry: (httpResponseMessage, span, retryCount, ctx) =>
{
if (httpResponseMessage.Result.StatusCode == System.Net.HttpStatusCode.Unauthorized)
{
PerformReauthorazation();
}
Console.WriteLine($"Retrying({retryCount})...");
});
private void PerformReauthorazation()
{
var x = 0;
//do something
}
但正如您所期望的那样,这与实际控制器是分离的。
要重新授权,我需要使用所有凭据调用并获取一个新令牌到端点。
然后我添加以下标题
_httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", bearerToken.AccessToken);
但是我如何从 StartUp 中做到这一点?