我有一个Web项目(C#,MVC5,但没有WebAPI)和一个简单的HTTP REST客户端,该客户端正在调用外部REST服务并获取accessToken等。
我想检查我对statusCode 401的所有Get / PostAsync调用的响应,但是我发现只能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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句