2010-12-10 53 views
0

方案:网络浏览器控件无法创建cookie?

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

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

一旦从ImageHost生成响应,我将WebBrowser控件中的结果转换为图像。

问题:

当我在我的电脑上运行SnapshotServer(Windows 7的IE8),使用IIS7,并导航到ImageHost我的开发服务器(Windows 2008 R2,IE8)上,作为需要的结果 - 我登录到ImageHost并重定向到我想要的图像。 当我在任何Windows 2008 R2服务器上使用IIS7运行SnapshotServer,并导航到我的开发服务器上的ImageHost(Windows 2008 R2,IE8)时,结果并非如所需 - ImageHost无法登录 - 所以我的映像是登录页面。它未能登录的原因是它没有创建一个Auth cookie。

所以我想知道是否有人能告诉我为什么WebBrowser控件在从Windows 2008服务器运行时无法创建Cookie。

回答

3

首先它与你的Windows版本或你的IIS版本,甚至你的IE版本无关。

这可能与您的IE在Windows 2008上的一些安全问题有关。检查Internet选项并启用cookie(如果它被禁用,我认为它不是)。

你也可以强迫你的浏览器控件使用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); 
    } 
} 

这些应该解决您的问题

+0

是否有可能在Web浏览器控件中创建呢? – Euclid 2010-12-10 13:34:46

+0

是的,上面的代码只是为了这个目的:) – EBAG 2010-12-10 14:13:44

+1

我得到这个错误当前上下文中不存在Globals。 – 2011-06-17 02:48:20