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.
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.
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);
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.
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)
{
}
}
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!!!
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 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.