C# Web浏览器控件无法创建Cookie?

C# Web浏览器控件无法创建Cookie?,c#,asp.net,authentication,iis-7,C#,Asp.net,Authentication,Iis 7,情景: 我有一个web应用程序(SnapshotServer),它使用WebBrowser控件拍摄网页的快照图像 我使用SnapshotServer中的WebBrowser控件导航到安全web应用程序(ImageHost)的入口页面,然后将我重定向到所需页面。 ImageHost应用程序受FormsAuthentication保护,FormsAuthentication使用cookie。我导航到的入口页面负责让我登录,这将创建一个Auth cookie 从ImageHost生成响应后,我将Web

情景:

我有一个web应用程序(SnapshotServer),它使用WebBrowser控件拍摄网页的快照图像

我使用SnapshotServer中的WebBrowser控件导航到安全web应用程序(ImageHost)的入口页面,然后将我重定向到所需页面。 ImageHost应用程序受FormsAuthentication保护,FormsAuthentication使用cookie。我导航到的入口页面负责让我登录,这将创建一个Auth cookie

从ImageHost生成响应后,我将WebBrowser控件内的结果转换为图像

问题:

当我在PC(Windows 7,IE8)上使用IIS7运行SnapshotServer,并在我的开发服务器(Windows 2008 R2,IE8)上导航到ImageHost时,结果符合要求-我登录到ImageHost并重定向到我想要的图像页面。 当我使用IIS7在任何Windows 2008 R2服务器上运行SnapshotServer,并导航到我的开发服务器(Windows 2008 R2,IE8)上的ImageHost时,结果不符合要求-ImageHost无法登录-因此我的图像位于登录页中。它无法登录的原因是它没有创建身份验证cookie


因此,我想知道是否有人能告诉我为什么WebBrowser控件在Windows 2008服务器上运行时无法创建cookie。

首先,它与您的Windows版本、IIS版本甚至IE版本无关

这可能与windows 2008上IE的某些安全问题有关。检查internet选项并启用Cookie(如果已禁用,我认为未禁用)

您还可以强制WebBrowser控件使用cookie容器,如下所示:

public partial class WebBrowserControl : Form
{
     private String url;

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

     public WebBrowserControl(String path)
     {
          this.url = path;
          InitializeComponent();

          // set cookie
          InternetSetCookie(url, "JSESSIONID", Globals.ThisDocument.sessionID); 

          // navigate
          webBrowser.Navigate(url); 
     }
}

这些应该可以解决您的问题

首先,它与您的windows版本、IIS版本甚至IE版本无关

这可能与windows 2008上IE的某些安全问题有关。检查internet选项并启用Cookie(如果已禁用,我认为未禁用)

您还可以强制WebBrowser控件使用cookie容器,如下所示:

public partial class WebBrowserControl : Form
{
     private String url;

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

     public WebBrowserControl(String path)
     {
          this.url = path;
          InitializeComponent();

          // set cookie
          InternetSetCookie(url, "JSESSIONID", Globals.ThisDocument.sessionID); 

          // navigate
          webBrowser.Navigate(url); 
     }
}

这些应该可以解决您的问题

是否可以在web浏览器控件中创建此错误?我得到此错误全局在当前上下文中不存在。是否可以在web浏览器控件中创建此错误全局在当前上下文中不存在。