Cefsharp在wpf中清除缓存,cookie和浏览器数据

时间:2017-12-10 14:12:56

标签: wpf cookies browser-cache cefsharp

我正在开发一个使用cefsharp浏览器作为其一部分的银行设备上的应用程序。因为这个应用程序将被任何人使用,它不应该保存下一个用户可以看到的来自先前用户的任何数据。我希望在关闭后清除所有缓存的浏览器数据。

public void InitBrowser()
    {
        settings = new CefSettings();
        settings.CachePath = AppDomain.CurrentDomain.BaseDirectory + "cache";
        settings.CefCommandLineArgs.Add("disable-application-cache", "1");
        settings.CefCommandLineArgs.Add("disable-session-storage", "1");
        if (!Cef.IsInitialized) Cef.Initialize(settings);
        webBrowser = new CefSharp.Wpf.ChromiumWebBrowser();
        MainGrid.Children.Add(webBrowser);
    }

我希望在调用名为WebPages_Exit的函数后清除所有缓存的数据。如何在不删除浏览器实例或关闭CEF的情况下删除所有缓存数据,导致CEF无法初始化两次,并且在处理后无法创建另一个浏览器实例。

我在visit中实现了ICookieVisitor功能以保存Cookie并使用deleteCookies等方法或禁用缓存cefSetting命令,但没有任何原因导致Cookie列表为空且{{1}永远不会调用visit的函数。似乎它被保存在另一个部分,只是在CEF关闭时重置。

2 个答案:

答案 0 :(得分:6)

我找到了答案!这是因为禁用了缓存设置。 通过禁用缓存设置,它实际缓存数据,但无法访问,例如,如果不关闭CEF,则无法删除cookie。因此,如果您启用缓存设置(将其保留为默认设置),则可以使用Cef.GetGlobalCookieManager().DeleteCookies("", "")方法删除它们。

答案 1 :(得分:0)

您可以在调用Cef.Initialize

之前删除缓存文件夹
Directory.Delete(cacheDirBase + "\\blob_storage", true);
Directory.Delete(cacheDirBase + "\\Cache", true);
Directory.Delete(cacheDirBase + "\\Code Cache", true);
Directory.Delete(cacheDirBase + "\\GPUCache", true);
Directory.Delete(cacheDirBase + "\\Local Storage", true);
Directory.Delete(cacheDirBase + "\\Session Storage", true);

只需删除您不想删除的内容即可。