我希望能夠在重新啓動應用程序時保留Web瀏覽器控件的狀態。例如,如果我使用兩小時cookie過期登錄到網站,我退出該應用並在兩個小時內重新啓動它,我想繼續同一個會話。 (如果我一直控制開放,那麼會話將保持相同的方式)。同樣的東西與餅乾不會過期,似乎被吹走了。在應用程序重新啓動後保留cookie c#webbrowser控件
有沒有人知道任何解決方案,或者可以指出我強調的activex代碼,我可以用來保存和恢復會話?我很確定這是不可能通過託管代碼。
我希望能夠在重新啓動應用程序時保留Web瀏覽器控件的狀態。例如,如果我使用兩小時cookie過期登錄到網站,我退出該應用並在兩個小時內重新啓動它,我想繼續同一個會話。 (如果我一直控制開放,那麼會話將保持相同的方式)。同樣的東西與餅乾不會過期,似乎被吹走了。在應用程序重新啓動後保留cookie c#webbrowser控件
有沒有人知道任何解決方案,或者可以指出我強調的activex代碼,我可以用來保存和恢復會話?我很確定這是不可能通過託管代碼。
不過期的cookies是存儲在內存中的會話cookie,當瀏覽器關閉時它們會丟失。
會話數據不存儲在cookie中。它存儲在服務器上。默認會話超時爲20分鐘。
但是,cookie是訪問會話的關鍵。
因此,要得到這個工作,你需要:
[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的安全模式下工作。但應該是一個很好的起點。
這對服務器端很好,但我的問題是關於客戶端。 當您使用webcontrol退出應用程序時,cookies會被吹走(會話和常規)。我希望能夠在兩次使用之間保持這一點。基本上允許用戶登錄一次,退出應用程序,再次啓動應用程序,並仍然登錄。遵循所有規則,如cookie過期等。 – Jakub 2009-12-09 21:56:01
這是正確的答案。提到的信息會影響客戶端如何與服務器上的會話進行交互。 – AaronS 2009-12-10 21:59:57