Потратив некоторое время на поиск готового решения, я закончил реализацию метода расширения до System.Net.WebHeaderCollection
:
public static class WebHeaderCollectionExtensions
{
public static ILookup<string, string> ToLookup(this WebHeaderCollection some)
{
List<KeyValuePair<string, string>> headers = new List<KeyValuePair<string, string>>();
if (some.Count > 0)
{
string[] tempSplittedHeaders = null;
foreach (string headerName in some)
{
if (some[headerName].Contains(";,"))
{
tempSplittedHeaders = Regex.Split(some[headerName], ";,");
foreach (string splittedHeader in tempSplittedHeaders)
{
headers.Add(new KeyValuePair<string, string>(headerName, splittedHeader));
}
}
else
{
headers.Add(new KeyValuePair<string, string>(headerName, some[headerName]));
}
}
}
return headers.ToLookup(keySelector => keySelector.Key, elementSelector => elementSelector.Value);
}
}
Благодаря этому замечательному методу расширения я могу преобразовать коллекцию заголовков в поиск, который позволяет дублировать ключи, и в конце дня, выполнив некоторую обработку, я получаю список всех заголовков HTTP в отдельности. :
string wholeCookie = WebOperationContext.Current.IncomingRequest.Headers.ToLookup()["Set-Cookie"].Single(cookie => cookie.Contains("[Cookie name]"));
Я надеюсь, что поделиться своим решением будет хорошим вкладом, так как я полагаю, что другие имели или используют подобный случай!