应用程序重启c#webbrowser控件后保留cookie

时间:2009-12-09 20:19:39

标签: c# cookies webbrowser-control

我希望能够在重新启动应用程序时保留Web浏览器控件的状态。例如,如果我登录到两个小时cookie过期的站点,我退出应用程序并在两小时内重新启动它,我想继续相同的会话。 (如果我一直打开控件,会话将保持相同的方式)。与未过期的cookie相同,似乎被吹走了。

有没有人知道任何解决方案,或者可以指出我可以用来保存和恢复会话的下划线activex代码?我很确定通过托管代码这是不可能的。

2 个答案:

答案 0 :(得分:2)

    [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安全模式。但应该是一个很好的起点。

答案 1 :(得分:-1)

未过期的Cookie是存储在内存中的会话Cookie,当浏览器关闭时会丢失。

会话数据未存储在cookie中。它存储在服务器上。默认会话超时为20分钟。

但cookie是访问会话的关键。

为了让这个工作,你需要:

  • 确保Cookie不会丢失,设置过期
  • 确保会话信息不会丢失,将会话的默认超时设置为与Cookie过期相同