如何清除System.Windows.Forms.WebBrowser会话数据?如何在不重新启动应用程序的情况下清除当前会话数据(cookie、缓存数据、身份验证会话等)?更新:我说的是Windows.Forms中的WebBrowser控件,而不是ASP.Net会话。要清除会话(例如HttpOnlycookie),您可以使用wininet.dll中的InternetSetOption()。私有constintINTERNET_OPTION_END_BROWSER_SESSION=42;[DllImport("wininet.dll",SetLastError=true)]privatestaticexternboolInternetSetOption(IntPtrhInternet,intdwOption,IntPtrlpBuffer,intlpdwBufferLength);并在需要清除会话时使用此方法InternetSetOption(IntPtr.Zero,INTERNET_OPTION_END_BROWSER_SESSION,IntPtr.Zero,0);webBrowser1.Document.Window.Navigate(url);如果启用了javascript,则可以使用此代码段清除网络浏览器当前所在站点的cookie(除此之外,我也没有找到清除会话cookie的方法)。webBrowser.Navigate("javascript:void((function(){vara,b,c,e,f;f=0;a=document.cookie.split(';');for(e=0;e它此小书签用于清除cookie。除此之外,您还可以删除“C:\DocumentsandSettings\username\Cookies”文件夹中的内容(减去通常处于锁定状态的index.dat)。至于缓存数据,只需删除“C:\DocumentsandSettings\用户名\LocalSettings\TemporaryInternetFiles\”中的所有文件即可。如果您真的需要能够清除所有站点的cookie,从长远来看,您最好使用axWebBrowser控件之类的东西。我已经尝试了所有方法来清除表单数据,这样下一个用户就不会看到以前的电子邮件地址等。我最终这样做是为了清除cookies...string[]theCookies=System.IO.Directory.GetFiles(Environment.GetFolderPath(Environment.SpecialFolder.Cookies));foreach(stringcurrentFileintheCookies){try{System.IO.File.删除(当前文件);}catch(Exceptionex){}}webBrowser1.Document.Cookies=""将无效。此调用不会清除cookie。webBrowser1.Document.Cookies=仅用作javascript中的document.cookie。您应该找到要清除的cookie,“Session”,使用webBrowser1.Document.Cookies="Session="";它只是根据需要将cookie设置为“。以下解决方案对我有用-webBrowser1.Document.ExecCommand("ClearAuthenticationCache",false,null);以下帖子建议删除cookie-https://stackoverflow.com/a/21512662/6291511您可以在此处找到更多相关信息-https://msdn.microsoft.com/en-us/library/system.windows.forms。htmldocument.execcommand(v=vs.110).aspx希望对你有帮助!!!PrivateConstINTERNET_OPTION_END_BROWSER_SESSIONAsInteger=42公共共享函数InternetSetOption(hInternetAsIntPtr,dwOptionAsInteger,lpBufferAsIntPtr,lpdwBufferLengthAsInteger)作为布尔结束函数PrivateSubWebBrowserFormName_Closed(ByValsenderAsObject,ByValeAsSystem.EventArgs)处理我.ClosedInternetSetOption(IntPtr.Zero,INTERNET_OPTION_END_BROWSER_SESSION,IntPtr.Zero,0)EndSub只是为在VB中寻找此答案的人发帖。编码愉快!您必须认识到,从Web服务器的角度跟踪“会话状态”的方法是为客户端浏览器提供一个带有会话ID的cookie。当浏览器回发给服务器时,此cookie允许服务器将请求与存储的会话状态相关联。所以解决办法就是清除webBrowser控件的cookies。例如webBrowser1.Document.Cookies="",我认为它应该可以工作。ASP.NET也有所谓的“无cookie会话”,它通过向URL添加会话ID来工作。因此,如果这是服务器使用的机制,您可以尝试将其从URL中过滤掉。但是你不会看到那么多,它主要是基于cookie的会话状态。Windows7使用index.dat文件来存储cookie和历史记录,这样Bill和他在CIA中心的朋友就可以监视你并尽一切可能确保你不会删除这些文件,因为“特殊文件夹”正在运行在Windows中,using和.Dat文件保持锁定状态。这不是一个完美的解决方案,但它在某种程度上适用于列表中的完整文件名。以上是C#学习教程:如何清除System.Windows.Forms.WebBrowser会话数据?如果分享的内容对你有用,需要了解更多C#学习教程,希望大家多多关注---intDeletedCount=0;intCouldNotDelete=0;杀死探索者();foreach(stringDatFileinDatFiles){//不要放置断点或进入代码否则资源管理器将启动并且文件将再次被锁定DirectoryInfoDInfo=newDirectoryInfo(DatFile.Replace("index.dat",""));FileAttributesOldDirAttrib=DInfo.Attributes;DInfo.Attributes=FileAttributes.Normal;//设置为正常否则无法删除FileInfoFInfo=newFileInfo(DatFile);FileAttributesOldFileAttrib=FInfo.Attributes;SetAttr(FInfo,FileAttributes.Normal);尝试删除(FInfo);SetAttr(FInfo,OldFileAttrib);//设置回Hidden,system,directory,notcontentindexedif(File.Exists(DatFile))CouldNotDelete++;否则删除计数++;}if(DatFiles.Count>0)//让资源管理器再次运行System.Diagnostics.Process.Start(DatFiles[DatFiles.Count-1].Replace("index.dat",""));其他系统.Diagnostics.Process.Start("探索者");System.Windows.Forms.MessageBox.Show("Deleted"+DeletedCount+"Index.datfileswith"+CouldNotDelete+"Errors");返回“已删除”+DeleteFileCount+“文件”;}privatevoidKillExplorer(){foreach(ProcessPinProcess.GetProcesses()){//杀死这两个进程,因为这些是锁定文件的进程if(P.ProcessName.ToLower()=="explorer")P.杀();如果(P.ProcessName.ToLower()=="iexplore")P.Kill();}}privateboolTryDelete(FileInfoInfo){try{Info.Delete();返回真;}catch{returnfalse;}}privatevoidSetAttr(FileInfoInfo,FileAttributesAttr){try{Info.Attributes=Attr;}catch{}}本文收集自网络,不代表立场。如涉及侵权请点击维权联系管理员删除转载请注明出处:
