Сохранение куки после перезапуска приложения C# webbrowser control

Я хочу иметь возможность сохранять состояние элемента управления веб-браузера при перезапуске приложения. Например, если я захожу на сайт с двухчасовым истечением срока действия cookie, я закрываю приложение и перезапускаю его в течение двух часов, я хотел бы продолжить тот же сеанс. (таким же образом сеанс будет сохранен, если у меня все время будет открыт контроль). То же самое относится и к печенькам, срок годности которых не истекает и которые, похоже, сдуты.

Кто-нибудь знает какие-либо решения для этого, или может указать мне на подчеркивание кода ActiveX, который я мог бы использовать для сохранения и восстановления сеанса? Я уверен, что это невозможно с помощью управляемого кода.

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. Но должно быть хорошей отправной точкой.

Файлы cookie, срок действия которых не истек, являются сеансовыми файлами cookie, которые сохраняются в памяти, когда браузер закрывается, они теряются.

Данные сеанса не сохраняются в куки. Хранится на сервере. Время ожидания сеанса по умолчанию составляет 20 минут.

Но cookie - это ключ для доступа к сеансу.

Итак, чтобы это заработало, вам нужно:

  • Убедитесь, что куки не теряются, установите срок действия
  • Убедитесь, что информация о сеансе не потеряна, установите время ожидания сеанса по умолчанию так же, как истечение срока действия куки
Другие вопросы по тегам