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.Currentはnullです。
同じロジックを使用してヘッダーをログに記録するWebAPIContribのコードを見てきましたが、それらのコードも機能していないようです。
では、Web API プロジェクトで HTTP 応答ヘッダーをトレースするにはどうすればよいでしょうか?