/ /カスタムヘッダー値をHttpClientのDefaultRequestHeadersとして追加する - c#、asp.net-web-api、httpclient

HttpClientのDefaultRequestHeadersとして追加されたカスタムヘッダー値の更新 - c#、asp.net-web-api、httpclient

私は静的な httpclient リクエスト間で共有され、カスタムヘッダーを1つ追加したいと考えています。

httpClient.DefaultRequestHeaders.Add("customHeader", somevalue.ToString());

しかし、私はすべての要求に価値があることに気づいた私は各要求に置き換える予定のヘッダーに追加されています。既に存在する場合はヘッダーを削除してもう一度追加しようとしますが、エラーが表示されます 負荷試験.

if (httpClient.DefaultRequestHeaders.Contains("customHeader"))
{
httpClient.DefaultRequestHeaders.Remove("customHeader");
}
httpClient.DefaultRequestHeaders.Add("customHeader",somevalue.ToString());

エラー -

System.ArgumentException: An item with the same key has already been added.
System.InvalidOperationException: Collection was modified; enumeration operation may not execute.
System.ArgumentNullException: Value cannot be null.

リクエストごとにカスタムヘッダーの値を更新するにはどうすればよいですか?

回答:

回答№1は1

HttpRequestMessageを使用して実際の(現在の)リクエストにヘッダーを追加し、GetAsyncではなくSendAsyncで呼び出しを置き換え、問題を解決しました。ありがとう@リベント。


回答№2の場合は0

私が得たエラー: An item with the same key has already been added. Key: x

mahesh_ing答えのサンプルコード:

var request = new HttpRequestMessage
{
Method = this.method,
RequestUri = new Uri(this.requestUri),
};

request.Headers.Add("Key", "Value");

var client = new System.Net.Http.HttpClient
{
Timeout = this.timeout
};

return await client.SendAsync(request);