6

Web プロジェクト (C#、MVC5、ただし WebAPI はありません) と、外部 REST サービスを呼び出して accessToken などを取得する単純な HTTP REST クライアントがあります。

すべての Get/PostAsync 呼び出しからの statusCode 401 の応答を確認したいのですがSendAsyncDelegatingHandler.

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 を更新することです。)

4

2 に答える 2

8

あなたは正しい軌道に乗っていると思います。ただし、 、 などSendAsyncの代わりに使用するように呼び出しを変更する必要はありません。むしろ、インスタンス化する方法を変更する必要があります:GetAsyncPostAsyncHttpClient

var client = new HttpClient(new CustomDelegatingHandlerTokenRefresher());
// GetAsync, PostAsync, etc will hit your handler
于 2015-03-17T21:32:13.377 に答える