设置逗号时,System.Net.Http.HttpClient实例会引发异常.为什么?

Pur*_*ome 3 .net c# http-headers dotnet-httpclient

鉴于以下System.Net.Http.HttpClient Portable Class Library引发异常:

var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Add("Authorization", "aaaa,bbbb");
Run Code Online (Sandbox Code Playgroud)

例外情况是:格式无效

1 values, System.Net.Http.Headers.HeaderInfo headerInfo, Boolean ignoreInvalid) [0x0004c] in /Developer/MonoTouch/Source/mono/mcs/class/System.Net.Http/System.Net.Http.Headers/HttpHeaders.cs:195 at System.Net.Http.Headers.HttpHeaders.Add (System.String name, IEnumerable/Developer/MonoTouch/Source/mono/mcs/class/System.Net.Http/System.Net.Http 中的System.Net.Http.Headers.HttpHeaders.AddInternal(System.String name,IEnumerable 1 values)[0x00011] .Headers/HttpHeaders.cs:170位于/ Developer/MonoTouch/Source/mono/mcs/class/System中的System.Net.Http.Headers.HttpHeaders.Add(System.String name,System.String value)[0x00000]. Net.Http/System.Net.Http.Headers/HttpHeaders <... snip ...>

现在这只发生在以下情况

标题键= Authorization.如果你把它改成其他任何东西,那没关系.值=必须有逗号.

现在,这个先前的SO问题表明逗号是在标题中粘贴多个值的正确方法.

谁能解释一下发生了什么?

注意:这是在Xamarin上,所以我猜它是单声道的.不确定这是否重要.

更新:

这是一张照片.

在此输入图像描述

Pau*_*hra 5

根据这个链接,用逗号分隔的规范rfc2617似乎有效.

"它使用一个可扩展的,不区分大小写的令牌来识别身份验证方案,然后是逗号分隔的属性 - 值对列表,其中包含通过该方案实现身份验证所需的参数."

但其中暗示你很可能错误地设置它们,它们必须是"属性 - 值对"的形式:

auth-param     = token "=" ( token | quoted-string )
Run Code Online (Sandbox Code Playgroud)

你究竟是如何设置它们的?

httpClient.DefaultRequestHeaders.Add("Authorization", "aaaa,bbbb");
Run Code Online (Sandbox Code Playgroud)

以上看似无效,它们不是属性对"aaaa,bbbb".您尝试设置的任一属性都没有=符号.

尝试以下测试:

httpClient.DefaultRequestHeaders.Add("Authorization", "aaaa=1234,bbbb=45678");
Run Code Online (Sandbox Code Playgroud)