0

我正在使用 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 中做到这一点?

4

0 回答 0