我有一个 Web 项目(C#、MVC5,但没有 WebAPI)和一个简单的 HTTP REST 客户端,该客户端调用外部 REST 服务并获取 accessToken 等。
我想检查所有 Get/PostAsync 调用对 statusCode 401 的响应,但我发现我只能覆盖SendAsync
实现时的方法DelegatingHandler
.
class CustomDelegatingHandler : DelegatingHandler
{
async protected override Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request, CancellationToken cancellationToken)
{
HttpResponseMessage response = await base.SendAsync(request, cancellationToken);
if (response.StatusCode == HttpStatusCode.Unauthorized)
{
我还可以做些什么,以免更改所有异步调用的实现SendAsync
?
(我真正想做的是刷新 accessToken。)
我认为你走在正确的道路上。您无需更改通话即可使用SendAsync
代替GetAsync
, PostAsync
等等。相反,您需要更改实例化方式HttpClient
:
var client = new HttpClient(new CustomDelegatingHandlerTokenRefresher());
// GetAsync, PostAsync, etc will hit your handler
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)