Как очистить Систему. Windows. Формы. Данные сессии WebBrowser?

Если кто-то использует @FormDataParam с аннотацией @ApiOperation swagger, он не будет работать (в соответствии с последней версией swagger в это время), как указано здесь:

https: // github.com/swagger-api/swagger-ui/issues/169

25
задан user54045 12 January 2009 в 05:02
поделиться

5 ответов

Необходимо понять, что путь "состояние сеанса" прослежен с точки зрения веб-сервера, путем предоставления клиентскому браузеру cookie с идентификатором сессии в нем. Когда браузер отправляет назад на сервер, тот cookie позволяет серверу связывать запрос с сохраненным состоянием сеанса.

, Таким образом, решение состоит в том, чтобы очистить cookie от управления webBrowser. Например, webBrowser1. Документ. Cookie ="", который должен работать, я думаю.

ASP.NET также имеет то, что это называет "сессиями без cookie", которые работают путем добавления идентификатора сессии к URL. Таким образом, если это - механизм, используемый сервером, Вы могли бы попытаться отфильтровать это из URL. Но Вы не будете видеть так много, это - главным образом основанное на cookie состояние сеанса.

0
ответ дан Ilya Tchivilev 15 October 2019 в 15:47
поделиться

webBrowser1.Document.Cookies = "" не будет работать. Этот вызов не очистит куки. webBrowser1.Document.Cookies = просто работает как document.cookie в JavaScript. Вы должны найти файл cookie, который хотите очистить, например «Сессия», используйте webBrowser1.Document.Cookies = "Session = ''"; It will just set the cookie to '', as you want.

1
ответ дан 28 November 2019 в 20:36
поделиться

Если у вас включен javascript, вы можете просто использовать этот фрагмент кода, чтобы очистить файлы cookie для сайта, на котором в настоящее время работает веб-браузер (я еще не нашел способа очистить файлы cookie сеанса, другие чем это).

webBrowser.Navigate("javascript:void((function(){var a,b,c,e,f;f=0;a=document.cookie.split('; ');for(e=0;e<a.length&&a[e];e++){f++;for(b='.'+location.host;b;b=b.replace(/^(?:%5C.|[^%5C.]+)/,'')){for(c=location.pathname;c;c=c.replace(/.$/,'')){document.cookie=(a[e]+'; domain='+b+'; path='+c+'; expires='+new Date((new Date()).getTime()-1e11).toGMTString());}}}})())")

Это получено из этого букмарклета для очистки файлов cookie.

В дополнение к этому, вы можете удалить содержимое папки «C: \ Documents and Settings \ username \ Cookies» (за вычетом index.dat, который обычно заблокирован).

Что касается кэшированных данных, должно быть достаточно просто удалить все файлы в "C: \ Documents and Settings \ username \ Local Settings \ Temporary Internet Files" ".

Если вам действительно нужно иметь возможность очистить файлы cookie для всех сайтов, вам, вероятно, в долгосрочной перспективе лучше использовать что-то вроде элемента управления axWebBrowser.

4
ответ дан 28 November 2019 в 20:36
поделиться

Чтобы очистить сеанс (например, файлы cookie HttpOnly), вы можете использовать InternetSetOption () из wininet.dll.

private const int INTERNET_OPTION_END_BROWSER_SESSION = 42;

[DllImport("wininet.dll", SetLastError = true)]
private static extern bool InternetSetOption(IntPtr hInternet, int dwOption, IntPtr lpBuffer, int lpdwBufferLength);

и использовать этот метод всякий раз, когда необходимо очистить сеанс.

InternetSetOption(IntPtr.Zero, INTERNET_OPTION_END_BROWSER_SESSION, IntPtr.Zero, 0);
webBrowser1.Document.Window.Navigate(url);
51
ответ дан 28 November 2019 в 20:36
поделиться

Я перепробовал все, чтобы очистить данные формы, чтобы следующий пользователь не видел предыдущий адрес электронной почты и т.д. В итоге я сделал следующее, чтобы очистить куки...

string[] theCookies = System.IO.Directory.GetFiles(Environment.GetFolderPath(Environment.SpecialFolder.Cookies));
foreach (string currentFile in theCookies)
{
   try
   {
      System.IO.File.Delete(currentFile);
   }
   catch (Exception ex)
   {
   }
}
4
ответ дан 28 November 2019 в 20:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: