Сохранение куки после перезапуска приложения 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 - это ключ для доступа к сеансу.
Итак, чтобы это заработало, вам нужно:
- Убедитесь, что куки не теряются, установите срок действия
- Убедитесь, что информация о сеансе не потеряна, установите время ожидания сеанса по умолчанию так же, как истечение срока действия куки