问题描述
真的需要一些帮助才能了解我的重新授权政策有什么问题。
我的政策是这样的:
var policy = Policy
.HandleResult<HttpResponseMessage>(message => message.StatusCode == HttpStatusCode.Unauthorized)
.RetryAsync(1,async (result,retryCount) =>
{
await _authorizeService.RefreshAccesstoken();
RestEaseClient.Token = _authorizeService.Accesstoken;
});
IRestEaseClient 看起来像这样:
public interface IRestEaseClient
{
[Header("X-Token")]
string Token { get; set; }
["root")]
Task SomeMethod();
.................
}
当令牌过期时,策略重试函数内的断点被命中,我成功接收到新令牌,将其值设置为 IrestEaseClient.Token 标头,但由于某种原因,重试请求使用旧标头值,我仍然get 401。在此之后的下一个请求将正常进行,不会出现 401 或点击重新授权策略代码。
解决方法
答案是 HttpRequestMessage 已经被 RestEase 构建了,现在 RestEase 已经不在了。您可以随心所欲地更改 RestEaseClient.Token ,直到您再次调用 SomeMethod 以构造新的 HttpRequestMessage 时,才会产生任何影响。
查看此讨论以了解详细信息https://github.com/canton7/RestEase/discussions/192