C#使用WebView2指定用户数据文件夹

在WebView2中,userDataFolder用于存储用户相关的数据,包括缓存、cookies、本地存储等。这个文件夹中的内容可以被WebView2控件访问和管理,用于提高浏览性能和用户体验。

1.权限问题导致创建缓存文件夹失败

做项目时遇到一个问题,用户将程序装到了C:\Program Files (x86)文件夹下,在运行WebView2实例加载时报错,提示:“无法创建数据目录 Microsoft Edge 无法读取和写入其数据目录”,是因为权限问题导致WebView2无法成功创建用户数据文件
解决方法是初始化实例时,指定文件夹路径

private async Task InitializeWebView()
{
    string userDataFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "WebView2", "UserData");
    Directory.CreateDirectory(userDataFolder); // 确保目录存在
    var environment = await CoreWebView2Environment.CreateAsync(null, userDataFolder);
    await wv2.EnsureCoreWebView2Async(environment);
}

2.错误“请求的资源在使用中”

如果遇到报错“请求的资源在使用中。(异常来自 HRESULT:0x800700AA)”,可能是因为多个WebView2共用一个缓存文件夹导致的数据竞争和冲突
解决方法是每个实例创建一个随机缓存文件夹

private async Task InitializeWebView()
{
    var userDataFolder = Path.Combine(Path.GetTempPath(), "WebView2", Path.GetRandomFileName());
    var environment = await CoreWebView2Environment.CreateAsync(null, userDataFolder);
    await wv2.EnsureCoreWebView2Async(environment);
}

需要考虑在程序退出时删除创建的缓存文件夹

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值