追加一个字典到WebHeaderCollection

本文关键字:string WebHeaderCollection 字典 一个 追加 | 更新日期: 2023-09-27 18:11:18

如何将IDictionary<string,string>附加到System.Net.WebHeaderCollection

或者甚至附加2个System.Net.WebHeaderCollection对象?我试图将许多自定义头添加到我的HttpWebRequest并覆盖名为request.Headers的源字典中的键值对。

我当前的代码有一个类型转换问题:

错误1实例参数:不能从System.Net转换。WebHeaderCollection'到'System.Collections.Generic.IEnumerable>'

// 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);

追加一个字典<string,string>到WebHeaderCollection

试试这个:

var request = (HttpWebRequest)WebRequest.Create(requestUrl);
foreach(var customHeader in customHeaders)
    request.Headers.Add(customHeader.Key, customHeader.Value);

Concat不是原地操作,它只返回连接的集合。所以即使它编译了,它实际上也不会工作。

无论如何,要使用泛型IEnumerable遍历头文件,您需要这样做:

request.Headers.Cast<HttpRequestHeader>()

这应该清楚地说明为什么不能将DictionaryIEnumerable