为什么HttpRequestHeaders.GetValues(string)返回的IEnumerable只有1个字符串?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么HttpRequestHeaders.GetValues(string)返回的IEnumerable只有1个字符串?相关的知识,希望对你有一定的参考价值。
我无法弄清楚为什么HttpRequestHeaders.GetValues(string)返回的IEnumerable返回一个IEnumerable,其中只有1个项目。
当具有所请求名称的多个项目在标题中时,我得到一个IEnumerable,其中包含1个字符串条目,该条目等于所有匹配标题项目的CSV连接。
我希望如果返回值是一个IEnumerable,每个匹配的头条目将是它自己的项目。相反,如果方法总是连接所有内容,那么我希望返回值只是一个字符串。
预期:
{ "Test", "Test2" }
实际:
{ "Test, Test2" }
使用Fiddler进行测试,我尝试在标题中添加多个条目:
GET https://localhost/api/v1/users/1 HTTP/1.1
Host: localhost
TestHeaderField: Test
TestHeaderField: Test2
以及多个逗号分隔的项目:
GET https://localhost/api/v1/users/1 HTTP/1.1
Host: localhost
TestHeaderField: Test, Test2
我正在使用带有.Net 4.5.1的ASP.NET Web API 2版本5.0.0。我在这里缺少什么,或者这是底层代码中的错误?
如果值格式正确,HttpRequestHeaders.GetValues将为其具有解析器的标头返回多个值。您可以通过发送多个Accept
标头来测试:
GET https://localhost/api/v1/users/1 HTTP/1.1
Host: localhost
Accept: text/html
Accept: application/xhtml+xml
Accept: application/xml
您可以尝试这样的方法来获取每个请求标头:
NameValueCollection headers = HttpRequestHeaders;
for (int i = 0; i < headers.Count; i++)
{
string key = headers.GetKey(i);
string value = headers.Get(i);
// use key and value
}
根据需要调整它,你似乎只有值而不是键。
以上是关于为什么HttpRequestHeaders.GetValues(string)返回的IEnumerable只有1个字符串?的主要内容,如果未能解决你的问题,请参考以下文章
Redis 为什么面试都问我却不懂?因为它快吗?它为什么快?
Full GC为什么那么慢?为什么老年代垃圾回收效率比新生代低很多?为什么Minor gc速度比Major GC慢?