在应用程序重新启动后保留Cookie c#webbrowser控件

在应用程序重新启动后保留Cookie c#webbrowser控件,c#,cookies,webbrowser-control,C#,Cookies,Webbrowser Control,我希望能够在应用程序重新启动时保留web浏览器控件的状态。例如,如果我登录到一个cookie过期两小时的站点,我退出应用程序并在两小时内重新启动它,我希望继续相同的会话。(如果我一直打开控件,会话将保持相同的方式)。同样的事情也发生在那些不会过期的饼干上,它们似乎被吹走了 有人知道这方面的解决方案吗,或者可以告诉我在activex代码下面加下划线,我可以用它来保存和恢复会话?我很确定通过托管代码这是不可能的 未过期的cookie是存储在内存中的会话cookie,当浏览器关闭时,它们将丢失 会话数

我希望能够在应用程序重新启动时保留web浏览器控件的状态。例如,如果我登录到一个cookie过期两小时的站点,我退出应用程序并在两小时内重新启动它,我希望继续相同的会话。(如果我一直打开控件,会话将保持相同的方式)。同样的事情也发生在那些不会过期的饼干上,它们似乎被吹走了


有人知道这方面的解决方案吗,或者可以告诉我在activex代码下面加下划线,我可以用它来保存和恢复会话?我很确定通过托管代码这是不可能的

未过期的cookie是存储在内存中的会话cookie,当浏览器关闭时,它们将丢失

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

但是cookie是访问会话的关键

因此,要使其发挥作用,您需要:

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

我目前正在对此进行测试,我不确定它是否适用于较新的Vista/Win7安全模式。但这应该是一个很好的起点

这对服务器端有好处,但我的问题是关于客户端的。当您使用网络控件退出应用程序时,cookies会被吹走(会话和常规)。我希望能够在两次使用之间保存这个。基本上允许用户登录一次,退出应用程序,再次启动应用程序,然后仍然登录。遵循所有规则,如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
    );