17

Web API プロジェクトの HTTP 応答ヘッダーをログに記録しようとしています。

このプロジェクトは、VS2012、.NET 4.5、および ASP.NET MVC 4 によって開発されています。

次のDelegatingHandlerようなサブクラスを作成しました。

public class LoggingHandler : DelegatingHandler
{
    protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
    {

        // Execute the request
        return base.SendAsync(request, cancellationToken).ContinueWith(task =>
        {
            var response = task.Result;
            return response;
        });
    }
}

ただし、問題は、からヘッダー値を取得できないことresponseです。response.Headersは空のコレクションで、response.Content.Headersという名前のキーだけが含まれてContent-Typeおり、HttpContext.Currentnullです。

同じロジックを使用してヘッダーをログに記録するWebAPIContribのコードを見てきましたが、それらのコードも機能していないようです。

では、Web API プロジェクトで HTTP 応答ヘッダーをトレースするにはどうすればよいでしょうか?

4

3 に答える 3