如何在单个HTTP头中传入多值?C#客户端与服务端解析问询
解决方法
如果你想让服务端的StringValues解析出多个独立值,不需要用分隔符拼接字符串,直接在客户端给同一个请求头添加多个值即可,有两种常用方式:
客户端代码示例
方式1:多次调用Add方法
var c = new HttpClient(); c.DefaultRequestHeaders.Add("X-MyHeader", "123"); c.DefaultRequestHeaders.Add("X-MyHeader", "abc");
方式2:传入字符串集合
var c = new HttpClient(); c.DefaultRequestHeaders.Add("X-MyHeader", new[] { "123", "abc" });
服务端验证
服务端代码保持不变:
var Vals = Request.Headers["X-MyHeader"];
此时Vals会是包含两个元素的StringValues,分别为"123"和"abc"。
为什么之前的分隔符无效?
当你把多个值用逗号、分号等拼接成单个字符串传入Add方法时,HttpClient会将其作为单个头字段值发送到服务端,ASP.NET Core默认不会自动拆分这类拼接字符串为多个StringValues元素,所以你拿到的只会是完整的拼接字符串。
内容的提问来源于stack exchange,提问作者s k
相关产品推荐
相关产品推荐

