我想不通爲什麼了IEnumerable返回由HttpRequestHeaders.GetValues(串)返回一個IEnumerable,只有曾經在這1項。爲什麼HttpRequestHeaders.GetValues(string)返回的IEnumerable只有1個字符串?
當請求的名稱多個項目都在標題中,我得到一個IEnumerable帶有等於所有匹配的頭項目的CSV串聯1個字符串項。
如果返回值是一個IEnumerable每個匹配的頭項將是自己的項目我期望的那樣。相反,如果該方法總是連接所有的東西,那麼我希望返回值只是一個單一的字符串。
預計:
{ "Test", "Test2" }
實際:
{ "Test, Test2" }
使用招來測試,我已經嘗試添加多個條目,以我的頭:
GET https://localhost/api/v1/users/1 HTTP/1.1
Host: localhost
TestHeaderField: Test
TestHeaderField: Test2
由於以及多個公司mma分開的項目:
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。有什麼我在這裏失蹤或這是在底層代碼中的錯誤?
僅僅因爲它是RFC 2616的要求。明確來自HTTP 1.1§4.2:_「當且僅當該標題字段的整個字段值被定義爲以逗號分隔的列表」_「時,具有相同字段名的多個消息標題字段可以存在於消息中。 HttpRequestHeaders包含解析的頭文件,解析器執行一些「清理」。 – 2014-08-29 14:23:40
@AdrianoRepetti但第二個例子是* *一個逗號分隔值列表和'GetValues'返回'IEnumerable',所以爲什麼不會有多個值嗎?爲什麼它不會返回一個'string'? – CodingIntrigue 2014-08-29 14:29:10
@Rraham因爲第二個例子不需要任何清理。逗號分隔的列表...是單個字符串。我想知道當多個值可能會返回... – 2014-08-29 14:32:14