通过测试webBrowser与IE缓存和Cookie都存放在Local Settings\Temporary Internet Files,我们可以直接调用IE API进行清除

解决方案1:

public enum ShowCommands : int

{

SW_HIDE = ,

SW_SHOWNORMAL = ,

SW_NORMAL = ,

SW_SHOWMINIMIZED = ,

SW_SHOWMAXIMIZED = ,

SW_MAXIMIZE = ,

SW_SHOWNOACTIVATE = ,

SW_SHOW = ,

SW_MINIMIZE = ,

SW_SHOWMINNOACTIVE = ,

SW_SHOWNA = ,

SW_RESTORE = ,

SW_SHOWDEFAULT = ,

SW_FORCEMINIMIZE = ,

SW_MAX = 

}
[DllImport("shell32.dll")]
static extern IntPtr ShellExecute( IntPtr hwnd, string lpOperation, string lpFile, string lpParameters, string lpDirectory, ShowCommands nShowCmd); //清除IE临时文件
ShellExecute(IntPtr.Zero, "open", "rundll32.exe", "InetCpl.cpl,ClearMyTracksByProcess 255", "", ShowCommands.SW_HIDE)

其中ClearMyTracksByProcess 可进行选择设置 :

Temporary Internet Files  (Internet临时文件)

RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8

Cookies

RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 2

History (历史记录)

RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 1

 Form. Data (表单数据)

RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 16

 Passwords (密码)

RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 32

 Delete All  (全部删除)

RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 255

缺点:在Webbrowser 在不关闭的情况下无法清除cookie

解决方案2:

//清除Session所需要调用的函数
[ DllImport ("wininet.dll" , SetLastError = true )]
private static extern bool InternetSetOption ( IntPtr hInternet , int dwOption, IntPtr lpBuffer , int lpdwBufferLength );
//清空session
public void ResetSession()
{
//Session的选项ID为42
InternetSetOption ( IntPtr.Zero , , IntPtr.Zero , );
}
//清空cookie
public void ResetCookie()
{
if (c_web.Document != null )
{
c_web.Document.Cookie.Remove ( , c_web.Document.Cookie.Count() - ); }
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)
{
}
}
}

缺点:需要程序取得管理员权限

解决方案3:

利用 webBrowser 执行清楚cookie的js代码

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

缺点:在某些运行环境中会报“无法下载”的错,至于原因目前还没找到

清除webBrowser 缓存和Cookie的解决方案的更多相关文章

  1. 【C#】清除webBrowser 缓存和Cookie的解决方案

    试了很多方法,最后发现万剑大哥的方法管用,转载一下 转自:https://www.cnblogs.com/midcn/p/3527123.html 通过测试webBrowser与IE缓存和Cookie ...

  2. C# 通过调用Win32 API函数清除浏览器缓存和cookie

    public enum ShowCommands : int { SW_HIDE = , SW_SHOWNOrmAL = , SW_NOrmAL = , SW_SHOWMINIMIZED = , SW ...

  3. 【总结】清除webbrowser cookie/session的6种方法

    下面是我测试下来的6种清除webbrowser中cookie的6种方法: //方法一:调用 wininet.dll清除cookie (推荐) SuppressWininetBehavior(); // ...

  4. Android手机清除微信缓存

    方法一: 1.任意找一个微信好友,给他发送网址 http://debugx5.qq.com 2.自己点击这个网址跳转 3.进入后看到下面的页面,通过勾选第二张截图的Cookie和文件缓存来清除微信缓存 ...

  5. 使用Varnish代替Squid做网站缓存加速器的详细解决方案----转载

    [文章作者:张宴 本文版本:v1.2 最后修改:2008.01.02 转载请注明出处:http://blog.s135.com] 我曾经写过一篇文章──<初步试用Squid的替代产品──Varn ...

  6. JS 清除IE缓存

    js中自动清除ie缓存方法 — 常用 对于动态文件,比如 index.asp?id=...  或者 index.aspx?id=... 相信有经验的程序员都知道怎样禁止浏览器缓存数据了.  但是对于静 ...

  7. 1>MSBUILD : cordova-build error BLD401: 错误: BLD00401: 找不到模块“C:\Users\z-pc\AppData\Roaming\npm\node_modules\vs-tac\app.js”。请转到“工具”-->“选项”-->“Apache Cordova 工具”-->“Cordova 工具”-->“清除 Cordova 缓存”,然后尝试重新生成

    1>------ 已启动全部重新生成: 项目: BlankCordovaApp2, 配置: Debug Android ------1>  Your environment has bee ...

  8. vue项目强制清除页面缓存

    异常描述: 支付宝中内嵌h5项目(vue框架开发),前端重新打包上传之后访问页面会导致页面空白.页面tab点击异常之类异常情况,需要手动清除支付宝缓存才可以正常访问. 解决方案: 在HTTP协议中,只 ...

  9. 012_如何清除DNS缓存

    运维过程中经常会进行切换域名解析等的操作,就需要查看是否更新.但常常DNS设置已经更新了,但是用户那边的DNS还是没有更新. 以下分析几点原因及我的解决方案. 一. <1>本地你的dns缓 ...

随机推荐

  1. [转]NopCommerce How to code my own payment method

    本文转自:http://docs.nopcommerce.com/display/nc/How+to+code+my+own+payment+method Payment methods are im ...

  2. ARM学习篇 SDRAM理解

    1.SDRAM单管存储单元 SDRAM单管电路图 C记忆单元 T控制门管 Z字线 W位线 注:图示为N沟道耗尽型MOS管 写入:Z加高电平,MOS导通,W状态决定了电容C的状态 读出:Z加高电平,MO ...

  3. position:absolute/relative/fixed小结

    1.绝对定位:position:absolute; 当一个div块的位置被定义为绝对定位absolute时,也就意味着它失去了文档流的位置,后面的文档流会紧跟着补上来接替它的位置.如果上下左右的绝对偏 ...

  4. 时光煮雨 Unity3d 序列目标点的移动①

    系列目录 [Unity3D基础]让物体动起来①--基于UGUI的鼠标点击移动 [Unity3D基础]让物体动起来②--UGUI鼠标点击逐帧移动 时光煮雨 Unity3D让物体动起来③—UGUI DoT ...

  5. Golang tips

    1.go test 测试单个函数 go test -v -test.run Test* 2.

  6. ArrayList如何实现线程安全

    一:使用synchronized关键字,这个大家应该都很熟悉了,不解释了: 二:使用Collections.synchronizedList();使用方法如下: 假如你创建的代码如下:List< ...

  7. 完全平方数(钟神的hao)

    [问题描述] 从1− ?中找一些数乘起来使得答案是一个完全平方数,求这个完全平方数最大可能是多少. [输入格式] 第一行一个数字?. [输出格式] 一行一个整数代表答案对100000007取模之后的答 ...

  8. DBCP连接池配置参数说明

    <!-- 数据源1 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicData ...

  9. 4种sql分页

    四种方式实现SQLServer 分页查询 SQLServer 的数据分页: 假设现在有这样的一张表:CREATE TABLE test( id int primary key not null ide ...

  10. 让IE10等支持classList2.0(转)

    chrome24+, firesfox26+起支持classList2.0,即让它同时添加或删除多个类名, toggle方法支持第2个参数,用于强制添加或删除 var div = document.c ...