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.
Folgende Lösung hat bei mir funktioniert -
webBrowser1.Document.ExecCommand("ClearAuthenticationCache", false, null);
Dies wurde im folgenden Beitrag zum Löschen von Cookies vorgeschlagen - https://stackoverflow.com/a/21512662/6291511
Mehr Informationen dazu finden Sie hier - https://msdn.microsoft.com/en-us/library/system.Windows.forms.htmldocument.execcommand(v=vs.110).aspx
Hoffentlich hilft es!!!
Sie müssen sich darüber im Klaren sein, dass der "Sitzungsstatus" vom Standpunkt eines Webservers aus verfolgt wird, indem dem Client-Browser ein Cookie mit einer Sitzungskennung übergeben wird. Wenn der Browser eine Nachricht an den Server sendet, kann der Server anhand dieses Cookies die Anfrage mit einem gespeicherten Sitzungsstatus in Verbindung bringen.
Die Lösung besteht also darin, die Cookies des webBrowser-Steuerelements zu löschen. Z.B. webBrowser1.Document.Cookies = "", das sollte funktionieren, denke ich.
ASP.NET verfügt auch über so genannte "cookieless sessions", bei denen die Sitzungs-ID zur URL hinzugefügt wird. Wenn das also der vom Server verwendete Mechanismus ist, könnten Sie versuchen, dies aus der URL herauszufiltern. Aber Sie werden nicht viel sehen, es ist hauptsächlich der Cookie-basierte Sitzungsstatus.
Windows 7 verwendet index.dat-Dateien, um Cookies und den Verlauf zu speichern, damit Bill und seine Freunde in der CIA-Zentrale Sie ausspionieren können, und sie haben alles getan, um sicherzustellen, dass Sie diese Dateien nicht löschen können und dass nach dem Erstellen von Kopien, weil "Spezialordner" verwendet werden und die .dat-Dateien gesperrt bleiben, während Windows läuft.
Dies ist keine perfekte Lösung, aber sie funktioniert bis zu einem gewissen Grad, wenn die vollständigen Dateinamen in einer Liste enthalten sind.
int DeletedCount = 0;
int CouldNotDelete = 0;
KillExplorer();
foreach (string DatFile in DatFiles)
{//Do not put break point or step into the code else explorer will start and the file will become locked again
DirectoryInfo DInfo=new DirectoryInfo(DatFile.Replace("index.dat",""));
FileAttributes OldDirAttrib = DInfo.Attributes;
DInfo.Attributes = FileAttributes.Normal;//Set to normal else can not delete
FileInfo FInfo = new FileInfo(DatFile);
FileAttributes OldFileAttrib = FInfo.Attributes;
SetAttr(FInfo, FileAttributes.Normal);
TryDelete(FInfo);
SetAttr(FInfo, OldFileAttrib);//Sets back to Hidden,system,directory,notcontentindexed
if (File.Exists(DatFile))
CouldNotDelete++;
else
DeletedCount++;
}
if (DatFiles.Count>0)//Lets get explorer running again
System.Diagnostics.Process.Start(DatFiles[DatFiles.Count - 1].Replace("index.dat", ""));
else
System.Diagnostics.Process.Start("explorer");
System.Windows.Forms.MessageBox.Show("Deleted " + DeletedCount + " Index.dat files with " + CouldNotDelete + " Errors");
return "Deleted " + DeleteFileCount + " Files ";
}
private void KillExplorer()
{
foreach (Process P in Process.GetProcesses())
{//Kill both these process because these are the ones locking the files
if (P.ProcessName.ToLower() == "explorer")
P.Kill();
if (P.ProcessName.ToLower() == "iexplore")
P.Kill();
}
}
private bool TryDelete(FileInfo Info)
{
try
{
Info.Delete();
return true;
}
catch
{return false;}
}
private void SetAttr(FileInfo Info,FileAttributes Attr)
{
try
{
Info.Attributes = Attr;
}
catch { }
}
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.