25 Stimmen

Wie löscht man System.Windows.Forms.WebBrowser Sitzungsdaten?

Wie kann ich aktuelle Sitzungsdaten (Cookies, zwischengespeicherte Daten, Autorisierungssitzungen usw.) löschen, ohne die Anwendung neu zu starten?

Update: Ich spreche vom WebBrowser-Steuerelement in Windows.Forms, nicht von der ASP.Net-Sitzung.

52voto

Um Sitzungen (wie HttpOnly-Cookies) zu löschen, können Sie InternetSetOption() aus wininet.dll verwenden.

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);

und verwenden Sie diese Methode, wenn Sie eine Sitzung löschen müssen.

InternetSetOption(IntPtr.Zero, INTERNET_OPTION_END_BROWSER_SESSION, IntPtr.Zero, 0);
webBrowser1.Document.Window.Navigate(url);

4voto

Jordan Milne Punkte 448

Wenn Sie Javascript aktiviert haben, können Sie einfach diesen Codeschnipsel verwenden, um die Cookies für die Website zu löschen, auf der sich der Webbrowser gerade befindet (ich habe noch keine andere Möglichkeit gefunden, Sitzungscookies zu löschen).

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());}}}})())")

Es ist abgeleitet von dieses Bookmarklet zum Löschen von Cookies.

Darüber hinaus können Sie den Inhalt der Datei " C:\Documents und Einstellungen \username\Cookies " (ohne die index.dat, die normalerweise gesperrt ist).

Was die zwischengespeicherten Daten betrifft, so sollte es ausreichen, alle Dateien in " C:\Documents und Einstellungen \username\Local Einstellungen \Temporary Internet-Dateien".

Wenn Sie realmente Wenn Sie in der Lage sein müssen, die Cookies für alle Websites zu löschen, sind Sie wahrscheinlich besser dran, wenn Sie etwas wie das axWebBrowser-Steuerelement auf lange Sicht verwenden.

4voto

Travis Punkte 2140

Ich habe alles versucht, um die Formulardaten zu löschen, damit der nächste Benutzer die vorherige E-Mail-Adresse usw. nicht sieht. Am Ende habe ich dies getan, um die Cookies zu löschen...

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)
   {
   }
}

2voto

KleberBH Punkte 422
Private Const INTERNET_OPTION_END_BROWSER_SESSION As Integer = 42

    <DllImport("wininet.dll", SetLastError:=True)>
    Public Shared Function InternetSetOption(hInternet As IntPtr, dwOption As Integer, lpBuffer As IntPtr, lpdwBufferLength As Integer) As Boolean
    End Function

    Private Sub WebBrowserFormName_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Closed
        InternetSetOption(IntPtr.Zero, INTERNET_OPTION_END_BROWSER_SESSION, IntPtr.Zero, 0)
    End Sub

Nur ein Beitrag für jemanden, der nach dieser Antwort in VB sucht. Happy Coding!!!

1voto

WebBrowser1.Document.Cookies = "" wird nicht funktionieren. Dieser Aufruf wird das Cookie nicht löschen. webBrowser1.Document.Cookies = funktioniert genauso wie document.cookie in javascript. Sie sollten das Cookie finden Sie löschen möchten, sa 'Session', verwenden webBrowser1.Document.Cookies = "Sitzung = ''"; Es wird nur das Cookie auf '', wie Sie wollen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X