2010-12-10 52 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