为 WebView2 设置缓存目录

Posted

技术标签:

【中文标题】为 WebView2 设置缓存目录【英文标题】:Set Cache directory for WebView2 【发布时间】:2020-10-09 17:39:06 【问题描述】:

我在 WPF 控件中使用 WebView2 来托管新边缘。

在我的代码中,我想将 cookie 和浏览器特定数据缓存到缓存目录。创建 CoreWebView2Environment 时应在 CoreWebView2EnvironmentOptions 中设置缓存位置。

有什么方法可以实现吗?提前致谢。

【问题讨论】:

谷歌出现this。 【参考方案1】:

您可以在CoreWebView2Environment.CreateAsync 方法中设置用户数据文件夹。它的第二个参数和其他参数可能为空。

然后,您可以通过调用 WebView2.EnsureCoreWebView2Async method 让 WPF WebView 使用您的 CoreWebView2Environment 创建其 CoreWebView2。

但是,您必须在设置 WebView2.Source 属性之前调用 EnsureCoreWebView2Async,因为设置该属性会隐式导致初始化以默认的 CoreWebView2Environment 开始。

您可以在WebView2 documentation summary 部分阅读有关 WPF WebView2 控件初始化的更多信息。

【讨论】:

【参考方案2】:

我使用 WebView2 制作了一个 WPF 应用程序,它将缓存目录设置为用户 appdata 文件夹。下面是我的应用程序代码的 sn-p。

var webView2Environment = await CoreWebView2Environment.CreateAsync(null, _cacheFolderPath);
await kioskBrowser.EnsureCoreWebView2Async(webView2Environment);

kioskBrowser.Source = new Uri(url);

您可以在此处找到其余代码 KioskBrowser (GitHub)

【讨论】:

以上是关于为 WebView2 设置缓存目录的主要内容,如果未能解决你的问题,请参考以下文章

将 Webview2 Source 直接设置为二进制流

Wpf.Webview2.CoreWebview2.get 返回 null。对象引用未设置为对象的实例

设置 Webview2 标头或 cookie

WebView2:在 C# 中从 Javascript 代码设置对象属性

在异步任务中并行使用 WebView2

在 WebResourceRequested 事件中为 WebView2 设置 cookie