如何将IDictionary<string,string>
附加到System.Net.WebHeaderCollection
?
甚至可以附加2个System.Net.WebHeaderCollection
个对象?我正在尝试向我的HttpWebRequest
添加许多自定义标头,并覆盖名为request.Headers
的源词典中的键值对。
我当前的代码遇到了转换问题:
错误1实例参数:无法从'System.Net.WebHeaderCollection'转换为'System.Collections.Generic.IEnumerable&gt;'
// IDictionary <string, string> customHeaders; // populated earlier in the code
var request = (HttpWebRequest)WebRequest.Create(requestUrl);
// Compiler error below
request.Headers.Concat(customHeaders).GroupBy(d => d.Key)
.ToDictionary(d => d.Key, d => d.First().Value);
答案 0 :(得分:1)
试试这个:
var request = (HttpWebRequest)WebRequest.Create(requestUrl);
foreach(var customHeader in customHeaders)
request.Headers.Add(customHeader.Key, customHeader.Value);
Concat
不是就地操作,它只返回连接的集合。所以,即使它 编译,它也不会真正起作用。
在任何情况下,要使用通用IEnumerable迭代头文件,您需要这样做:
request.Headers.Cast<HttpRequestHeader>()
这应该清楚说明为什么你不能用 IEnumerable&lt; .HttpRequestHeader&gt; <连接 词典 /强>