Web API メッセージ ハンドラーでカスタム ヘッダー値を抽出するにはどうすればよいでしょうか? 質問する

Web API メッセージ ハンドラーでカスタム ヘッダー値を抽出するにはどうすればよいでしょうか? 質問する

現在、Web API サービスには、次のように 'SendAsync' をオーバーライドするメッセージ ハンドラーがあります。

protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
  //implementation
}

このコード内で、 という名前のカスタム追加されたリクエスト ヘッダー値を検査する必要がありますMyCustomID。問題は、次の操作を行うときに発生します。

if (request.Headers.Contains("MyCustomID"))  //OK
    var id = request.Headers["MyCustomID"];  //build error - not OK

...次のエラー メッセージが表示されます:

'System.Net.Http.Headers.HttpRequestHeaders' 型の式に [] を使用したインデックスを適用できません

どうすればアクセスできますか?シングルHttpRequestMessage(経由のカスタムリクエストヘッダーMSDN ドキュメント) インスタンスがこのオーバーライドされたメソッドに渡されますか?

ベストアンサー1

次のようなことを試してください:

IEnumerable<string> headerValues = request.Headers.GetValues("MyCustomID");
var id = headerValues.FirstOrDefault();

また、値を取得ヘッダーに常にアクセスできるとは限らない場合に使用できるヘッダーのメソッド。

おすすめ記事