C#:标题值集合使用什么类型

C#:标题值集合使用什么类型,c#,arrays,types,http-headers,C#,Arrays,Types,Http Headers,我正在创建一个基类,由多个客户端继承以供使用。它们都使用不同的标题 我有一组头值要通过设置client.DefaultRequestHeaders变量的“client”方法传递给基类 AuthenticationHeaderValue x = new AuthenticationHeaderValue(authValue.Parameter); NameValueHeaderValue y = new NameValueHeaderValue("AMSConnect-Version", "1_0

我正在创建一个基类,由多个客户端继承以供使用。它们都使用不同的标题

我有一组头值要通过设置client.DefaultRequestHeaders变量的“client”方法传递给基类

AuthenticationHeaderValue x = new AuthenticationHeaderValue(authValue.Parameter);
NameValueHeaderValue y = new NameValueHeaderValue("AMSConnect-Version", "1_0_0");
NameValueHeaderValue y2 = new NameValueHeaderValue("AMSConnect-Environment", "Dev");
通常,如果我只是尝试与once API和一组头进行接口,我会设置类似的东西

using (HttpClient client = new HttpClient(handler) { BaseAddress = baseAddress })
{
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", this.SttiServiceEnv.AccessToken);
    client.DefaultRequestHeaders.Add("AMSConnect-Version", "1_0_0");
    client.DefaultRequestHeaders.Add("AMSConnect-Environment", "Dev");
但是,
client.DefaultRequestHeaders
HttpRequestHeaders
)的类型没有设置器

如何创建标题数组并将其传递给客户端,如下所示:

using (HttpClient client = new HttpClient(handler) { BaseAddress = baseAddress })
{
   client.DefaultRequestHeaders = someVariable;

编辑:我知道授权将是一种不同的类型,但我希望有一个容器用于此类型和其他类型的头。

当您与HttpClient发出的每个请求中都有相同的头时,将使用
DefaultRequestHeaders
属性。这样就省去了每次发出请求时重复代码的麻烦

您遇到了一个问题,每个请求都有不同的头,因此不要将这些头添加到HttpClient,而是将它们添加到每个请求:

//HttpRequestMessage takes an HttpMethod (GET, POST, etc) and a url as parameters.
using (var request = new HttpRequestMessage(HttpMethod.Get, "/api/users"))
{
    message.Headers.Add("authorization", "bearer 1231098120938123");
    var response = await HttpClient.SendAsync(request);
}

另外,您应该知道,将HttpClient包装在每个请求的using语句中是一种糟糕的做法

为什么第二段代码不起作用?这就是添加到
DefaultRequestHeaders
属性的方式,因为没有setter。我正在创建一个基类,由多个客户端继承以利用。它们都使用不同的标题。将此添加到问题中。这违背了客户机DefaultHeaders的目的,将头添加到每个请求中,而不是添加到每个请求中,那么您是如何做到的呢?告诉我如何正确地做。如果DefaultHeaders是错误的方法,我应该用什么?我不是想表现得像个混蛋,抱歉。在下面贴出了答案。