为什么HttpRequestHeaders.GetValues(string)返回的IEnumerable只有1个字符串
本文关键字:IEnumerable 只有 1个 字符串 返回 HttpRequestHeaders GetValues string 为什么 | 更新日期: 2023-09-27 18:20:09
我不明白为什么HttpRequestHeaders返回的IEnumerable。GetValues(string)返回的IEnumerable中只有一个项。
当标题中有多个具有请求名称的项目时,我会得到一个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
我使用的是ASP.NET Web API 2版本5.0.0和.NET 4.5.1。是我遗漏了什么,还是这是底层代码中的错误?
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
}
根据需要调整它,您似乎只有值,但没有关键点。