C# 如何从请求中强制转换HttpRequestHeader的筛选列表?

C# 如何从请求中强制转换HttpRequestHeader的筛选列表?,c#,.net,asp.net-web-api,httpclient,visual-studio-2017,C#,.net,Asp.net Web Api,Httpclient,Visual Studio 2017,我正在尝试筛选由请求返回的标题列表。标题: var validHeaders = (HttpRequestHeaders)Request.Headers.Where(header => ValidHeaders.List.Contains(header.Key.ToUpper())); 我得到以下例外情况: System.InvalidCastException:'无法强制转换类型为的对象 'WhereEnumerableInterator1[System.Collections.Ge

我正在尝试筛选由
请求返回的标题列表。标题

var validHeaders = (HttpRequestHeaders)Request.Headers.Where(header => ValidHeaders.List.Contains(header.Key.ToUpper()));

我得到以下例外情况:

System.InvalidCastException:'无法强制转换类型为的对象 'WhereEnumerableInterator
1[System.Collections.Generic.KeyValuePair
2[System.String,System.Collections.Generic.IEnumerable`1[System.String]] 键入“System.Net.Http.Headers.HttpRequestHeaders”


如何将Request.Headers.Where表达式强制转换为HttpRequestHeaders?

应用
Where
子句时,它返回
IEnumerable
的枚举,不能强制转换为
HttpRequestHeaders
类。您必须创建一个新实例,遍历过滤后的集合,并将项添加到新创建的实例中

var validHeaders = Request.Headers.Where(header => ValidHeaders.List.Contais(header.Key.ToUpper()));
//create GET request
var request = new HttpRequestMessage(HttpMethod.Get, uri);
//Add the valid headers to the new request
foreach(var header in validHeaders) {
    request.Headers.Add(header.Key, header.Value);
}

应用
Where
子句时,它返回
IEnumerable
的枚举,并且不能强制转换为
HttpRequestHeaders
类。您必须创建一个新实例,遍历过滤后的集合,并将项添加到新创建的实例中

var validHeaders = Request.Headers.Where(header => ValidHeaders.List.Contais(header.Key.ToUpper()));
//create GET request
var request = new HttpRequestMessage(HttpMethod.Get, uri);
//Add the valid headers to the new request
foreach(var header in validHeaders) {
    request.Headers.Add(header.Key, header.Value);
}

应用
Where
子句时,它将更改为枚举,并且不能强制转换为
HttpRequestHeaders
类。您必须创建一个新实例,遍历过滤后的集合,并将项目添加到新创建的实例中。您最终要做什么。图像中有一些代码被弹出窗口阻止,因此无法判断。我正在尝试从现有请求生成一条新的请求消息,但筛选出不在ValidHeaders静态类列表中的标题。您如何处理筛选后的列表?是否将其添加到新请求?如果是,则只需枚举有效的头并将其添加到请求头中。弹出窗口正在阻塞,因此无法判断创建请求的方法所需的是我只是将其添加到新的HttpRequest当应用
Where
子句时,它将更改为枚举,并且不能强制转换为
HttpRequestHeaders
类。您必须创建一个新实例,遍历过滤后的集合,并将项目添加到新创建的实例中。您最终要做什么。图像中有一些代码被弹出窗口阻止,因此无法判断。我正在尝试从现有请求生成一条新的请求消息,但筛选出不在ValidHeaders静态类列表中的标题。您如何处理筛选后的列表?是否将其添加到新请求?如果是,则只需枚举有效的头并将其添加到请求头中。弹出窗口被阻塞,因此无法判断创建请求的方法所期望的是什么是的,我只是将其添加到一个新的httprequest中