C# 是否可以将请求标题与其他列表相交?
我正在尝试与标题列表相交:C# 是否可以将请求标题与其他列表相交?,c#,asp.net,asp.net-web-api,httprequest,visual-studio-2017,C#,Asp.net,Asp.net Web Api,Httprequest,Visual Studio 2017,我正在尝试与标题列表相交: var validHeaders = Request.Headers.ToArray().Intersect(ValidHeaders.List); 其中,有效领导的定义如下: public static class ValidHeaders { public static readonly IList<string> List = new ReadOnlyCollection<string> (new List<str
var validHeaders = Request.Headers.ToArray().Intersect(ValidHeaders.List);
其中,有效领导的定义如下:
public static class ValidHeaders
{
public static readonly IList<string> List = new ReadOnlyCollection<string>
(new List<string>
{
"Content-Type",
"DataServiceVersion",
"MinDataServiceVersion",
"Accept",
"If-Match",
"If-None-Match",
"Prefer"
});
}
公共静态类有效头
{
公共静态只读IList列表=新的只读集合
(新名单
{
“内容类型”,
“数据服务版本”,
“MinDataServiceVersion”,
“接受”,
“如果匹配”,
“如果没有匹配”,
“更喜欢”
});
}
如何将HttpRequestHeaders列表与另一个列表相交?返回所有标头及其值,这些标头的
键(标头名称)位于ValidHeaders.list
var validHeaders = Request.Headers.Where(header => ValidHeaders.List.Any(k => string.Equals(k, header.Key, StringComparison.InvariantCultureIgnoreCase)));
这可以作为扩展方法添加到staticValidHeader
类中
public static class ValidHeaders {
public static readonly IList<string> List = new ReadOnlyCollection<string>(new List<string>
{
"Content-Type",
"DataServiceVersion",
"MinDataServiceVersion",
"Accept",
"If-Match",
"If-None-Match",
"Prefer"
});
public static IEnumerable<KeyValuePair<string, IEnumerable<string>>> GetValidHeaders(this HttpRequestMessage request) {
var validHeaders = request.Headers.Where(header => ValidHeaders.List.Any(k => string.Equals(k, header.Key, StringComparison.InvariantCultureIgnoreCase)));
return validHeaders;
}
}
我们不需要不区分大小写的比较?在本例中,列表中的值与HttpRequestHeader中使用的大小写匹配。很容易修改代码以忽略大小写,但标题的大小写是否会有所不同?是的,手工编制的请求可能会有大小写不同的标题。
var validHeaders = Request.GetValidHeaders();