現在、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();
また、値を取得ヘッダーに常にアクセスできるとは限らない場合に使用できるヘッダーのメソッド。