C# 如何在配置级别处理过期的授权令牌
将授权令牌添加到C# 如何在配置级别处理过期的授权令牌,c#,.net-core,httpclient,separation-of-concerns,polly,C#,.net Core,Httpclient,Separation Of Concerns,Polly,将授权令牌添加到HttpRequestMessage的一种方法是只需在配置级别添加它: services.AddHttpClient<INetworkService, NetworkService>(client => { client.BaseAddress = new Uri(appConfig.Network.SE); client.DefaultRequestHeaders.Add("Authorization", TokenGene
HttpRequestMessage
的一种方法是只需在配置级别添加它:
services.AddHttpClient<INetworkService, NetworkService>(client =>
{
client.BaseAddress = new Uri(appConfig.Network.SE);
client.DefaultRequestHeaders.Add("Authorization", TokenGenerator.GetToken());
})
这回答了你的问题吗@PeterCsala不,我没有将策略逻辑强加给客户端。您有两种选择(我知道),要么用正在设置新令牌的实例替换客户端,要么从上下文检索访问令牌,并在重试时刷新上下文中的数据。
return Policy
.HandleResult<HttpResponseMessage>(response => response.StatusCode == HttpStatusCode.Unauthorized)
.RetryAsync(
retryCount : 1,
onRetryAsync: async (responseDelegate, retryNumber, context) =>
{
// Case 1: Token Expired
?? how to mutate request message with new auth header???
// Case 2: Actually unathorized
}