私はその一部として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を2回初期化できず、破棄した後、ブラウザの別のインスタンスを作成できません。
visit
にICookieVisitor
関数を実装してCookieも保存し、deleteCookies
のような方法を使用したり、キャッシュcefSettingコマンドを無効にしたりしましたが、何も機能せず、Cookieリストが空でvisit
IcookieVisitor
の関数が呼び出されることはありません。別の場所に保存されているようで、CEFがシャットダウンするとリセットされます。
答えを見つけた!キャッシュ設定が無効になっているためです。キャッシュ設定を無効にすると、実際にはデータがキャッシュされますが、アクセスできなくなります。たとえば、CEF
をシャットダウンしないとCookieを削除できません。したがって、キャッシュ設定を有効にする(デフォルト設定のままにする)場合は、Cef.GetGlobalCookieManager().DeleteCookies("", "")
メソッドを使用してそれらを削除できます。