我正在尝试删除webbrowser控件中的cookie。此代码删除了cookie文件,但在重新启动程序之前,cookie仍在内存中。
private void deleteCookies(string domain)
{
string cookiesPath =
Environment.GetFolderPath(Environment.SpecialFolder.Cookies);
string[] unWantedCookies =
Directory.GetFiles(cookiesPath, "*" + domain + "*");
foreach (string cookie in unWantedCookies)
{
File.Delete(cookie);
}
}
我试过这段代码:
webBrowser1 = new WebBrowser();
但它没有用。我猜它在环境变量的某个地方,但在哪里?
答案 0 :(得分:2)
你真的不应该使用文件IO删除cookie,因为cookie实际上不是文件,而是index.dat文件中的数据,有一个虚拟文件,但它不是真实的,删除它不会删除cookie从内存(这是你的问题) - 也不建议使用javascript hack来做到这一点。
您最好查看DeleteUrlCacheEntry以删除cookie,并使用FindFirst / NextUrlCacheEntry遍历所有缓存项,一旦开始循环,查找以“cookie:”开头的缓存项,然后您可以进一步查看cookie名称,创建时间(修改,同步,上次访问,到期等),以决定您要删除哪些cookie。
互联网上有许多预编写代码的好例子,它们允许你在IE中循环和删除缓存项,所以你可以使用它们中的任何一个,所有你需要做的就是在之前添加一个过滤器。 DeleteUrlCacheEntry调用以决定是否要为该项调用DeleteUrlCacheEntry,当然,如果这样做,它不仅会从内部数据库中删除缓存条目,而且还会将其从活动内存中删除,并且您还将没有得到“文件正在使用”错误,因为它会在删除它之前从内存和使用中释放它。
如果您需要更多信息或帮助,请告诉我。再一次,搜索你想要它的特定语言的DeleteUrlCacheEntry代码,嘿,它甚至存在于VB6中,所以我确定你可以毫无困难地找到c#的副本:)。
让我知道你是如何相处的。
答案 1 :(得分:0)
使用WebBrowser.InvokeScript
(http://msdn.microsoft.com/en-us/library/cc491132.aspx)执行一些将擦除当前页面的Cookie的Javascript。