C# WebBrowser.Document.Cookie不接受我的CookieContainer Cookie

C# WebBrowser.Document.Cookie不接受我的CookieContainer Cookie,c#,cookies,browser,cookiecontainer,C#,Cookies,Browser,Cookiecontainer,我正在尝试显示一个需要先登录的网页。 我使用HttpWebRequest/Response对象通过在后台收集会话和授权cookie来完成部分登录 登录后,HttpWebResponse对象将返回我希望通过WebBrowser控件向用户显示的HTML页面,因此我知道我有一组正确的会话/授权cookie来访问所需的网页 在CookieContainer中正确填充了相关cookies之后,我将WebBrowser.DocumentText属性设置为一个准备好的HTML,其中包含一个GET命令,指向我试

我正在尝试显示一个需要先登录的网页。 我使用HttpWebRequest/Response对象通过在后台收集会话和授权cookie来完成部分登录

登录后,HttpWebResponse对象将返回我希望通过WebBrowser控件向用户显示的HTML页面,因此我知道我有一组正确的会话/授权cookie来访问所需的网页

在CookieContainer中正确填充了相关cookies之后,我将WebBrowser.DocumentText属性设置为一个准备好的HTML,其中包含一个GET命令,指向我试图显示的网址。浏览器弹出,试图呈现准备好的HTML,我想我得到了一个与缺少cookie相关的服务器错误

当我在调用DocumentText属性之前尝试设置WebBrowser.Document.Cookie时,在调试器中,我看到Cookie属性在尝试将其设置为“cookName=cookValue;cookName=cookValue;”形式的字符串后始终保持空值

为什么Cookie属性拒绝我传递的Cookie字符串?这是否与HttpOnly cookies有关?我的cookie字符串是否格式不正确?我是否试图在错误的时间设置Cookie属性


我进行了WebBrowser.Navigate(“about:blank”)调用,这似乎是正确初始化WebBrowser对象所必需的。

以下是对我有效的方法:

  using System.Runtime.InteropServices;

  [DllImport("wininet.dll",CharSet = CharSet.Auto, SetLastError = true)]
  public static extern bool InternetSetCookie(string lpszUrlName, string lbszCookieName, string lpszCookieData);

  //'CookieCollection' was populated using HttpWebRequest/Response calls
  int i=0;
  InternetSetCookie("https://www.myurl.com/", null, CookieCollection[i++].ToString() + "; expires = Sun, 01-Jan-2013 00:00:00 GMT");
  //repeat for however many cookies you've got

  browser.Navigate("https://www.myurl.com/tools/..../Index.aspx?t=someValue", true);
  //or
  browser.DocumentText = someHtml;
注:

1) 如果不包含“expires”值,InternetSetCookie调用即使返回“true”也无法工作。“expires”值将cookie转换为持久cookie,而不是仅会话cookie

2) 'browser.Navigate(“关于:空白”);'似乎不需要。不管有没有这份声明,我都能进入我的页面

3) browser.Document.Cookie从未为我工作过(始终为空),无论我对它做了什么。我尝试了很多不同的字符串,包括传递到InternetSetCookie第三个参数的字符串