C# HttpWebRequest:将Cookie添加到CookieContainer->;ArgumentException(参数名称:cookie.Domain)

C# HttpWebRequest:将Cookie添加到CookieContainer->;ArgumentException(参数名称:cookie.Domain),c#,cookies,httpwebrequest,webrequest,C#,Cookies,Httpwebrequest,Webrequest,我正试图通过我的应用程序登录到一个网站。 我所做的: 首先,我了解了浏览器如何使用Fiddler执行授权过程。 我检查了POST请求是如何构建的,并尝试重新构建它。 浏览器发送4个cookies(谷歌分析),我尝试设置它们: CookieContainer gaCookies = new CookieContainer(); gaCookies.Add(new Cookie("__utma", "#########.###########.##########.##########.######

我正试图通过我的应用程序登录到一个网站。 我所做的:

首先,我了解了浏览器如何使用Fiddler执行授权过程。 我检查了POST请求是如何构建的,并尝试重新构建它。 浏览器发送4个cookies(谷歌分析),我尝试设置它们:

CookieContainer gaCookies = new CookieContainer();
gaCookies.Add(new Cookie("__utma", "#########.###########.##########.##########.##########.#"));
gaCookies.Add(new Cookie("__utmb", "#########.#.##.##########"));
gaCookies.Add(new Cookie("__utmc", "#########"));
gaCookies.Add(new Cookie("__utmz", "#########.##########.#.#.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)"));
(刚刚将原始cookie数据替换为#)

然后,我用调试器检查了代码,一旦第一个gaCookies.Add被执行,应用程序就会停止,并显示一个

System.ArgumentException: The parameter '{0}' cannot be an empty string. Parameter name: cookie.Domain
我想知道为什么会发生这种情况。Cookie的构造函数不需要域,我不知道从哪里可以得到这个值

如果你们中有人能帮我做这件事,那就太好了。
我不是网络开发者,也不是网络方面的专家,所以我对它了解不多。

如果没有“简短快速的回答”,我是否有一个很好的来源可以了解这一点?

CookieContainer
s可以为不同的网站保存多个cookie,因此必须提供一个标签(域)将每个cookie绑定到每个网站。可以在实例化单个cookie时设置域,如下所示:

Cookie chocolateChip = new Cookie("CookieName", "CookieValue") { Domain = "DomainName" };
获取域的一种简单方法是创建一个包含目标url的
Uri
(如果尚未使用),并使用
Uri.Host
属性设置cookie的域

CookieContainer gaCookies = new CookieContainer();
Uri target = new Uri("http://www.google.com/");

gaCookies.Add(new Cookie("__utmc", "#########") { Domain = target.Host });

这样简单的类应该是自文档化的,而不必是堆栈溢出问题。至少微软已经朝着正确的方向迈出了一步,并且没有显示一般性的“发生了错误”。