2009-12-09 25 views
1

我希望能夠在重新啓動應用程序時保留Web瀏覽器控件的狀態。例如,如果我使用兩小時cookie過期登錄到網站,我退出該應用並在兩個小時內重新啓動它,我想繼續同一個會話。 (如果我一直控制開放,那麼會話將保持相同的方式)。同樣的東西與餅乾不會過期,似乎被吹走了。在應用程序重新啓動後保留cookie c#webbrowser控件

有沒有人知道任何解決方案,或者可以指出我強調的activex代碼,我可以用來保存和恢復會話?我很確定這是不可能通過託管代碼。

回答

0

不過期的cookies是存儲在內存中的會話cookie,當瀏覽器關閉時它們會丟失。

會話數據不存儲在cookie中。它存儲在服務器上。默認會話超時爲20分鐘。

但是,cookie是訪問會話的關鍵。

因此,要得到這個工作,你需要:

  • 確保cookie不迷失方向,設置到期
  • 確保會話信息不會丟失,設置默認會話超時一樣的餅乾
+0

這對服務器端很好,但我的問題是關於客戶端。 當您使用webcontrol退出應用程序時,cookies會被吹走(會話和常規)。我希望能夠在兩次使用之間保持這一點。基本上允許用戶登錄一次,退出應用程序,再次啓動應用程序,並仍然登錄。遵循所有規則,如cookie過期等。 – Jakub 2009-12-09 21:56:01

+0

這是正確的答案。提到的信息會影響客戶端如何與服務器上的會話進行交互。 – AaronS 2009-12-10 21:59:57

1
[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)] 
    public static extern bool InternetGetCookie(
     string lpszUrlName, 
     string lpszCookieName, 
     StringBuilder lpszCookieData, 
     [MarshalAs(UnmanagedType.U4)] 
ref int lpdwSize 
    ); 


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

我目前正在測試上這一點到期,我不知道這是否會與新的VISTA/Win7的安全模式下工作。但應該是一個很好的起點。

相關問題