WinForm中WebView2部署后无法渲染本地HTML页面的问题及解决
WinForm WebView2部署后无法渲染本地HTML的问题与解决
问题概述
开发基于WinForm的WebView2应用,用于展示本地HTML文件:
- 调试版本在Visual Studio 2022中运行正常
- 本地直接执行发布版本无异常
- 通过安装程序部署到其他机器后,WebView2控件无法渲染本地HTML(已确认HTML文件已下载到目标机器)
WebView2运行时安装路径:
C:\Program Files (x86)\Microsoft\EdgeWebView\Application\109.0.1518.78
原渲染代码:
string path = Path.Combine(_tempFolder, servicehtml); try { webView.CreationProperties = new Microsoft.Web.WebView2.WinForms.CoreWebView2CreationProperties(); webView.CreationProperties.BrowserExecutableFolder = Properties.Resources.webview2_runtime_folder; webView.Source = new Uri(path); } catch (Exception excp) { MessageBox.Show(excp.Message); WriteLog(LogType.Info, Properties.Resources.ERR_WEBVIEW2_FAILURE, new object[] {excp.Message }); }
已按照微软官方文档设置BrowserExecutableFolder(Fixed Version运行时分发模式),但问题仍存在。
根因分析
在WebView2的Fixed Version模式下,仅指定BrowserExecutableFolder是不够的:
- WebView2运行时需要一个可读写的用户数据目录来存储缓存、会话数据、渲染配置等文件
- 部署后的程序若默认使用系统或安装目录下的用户数据路径,可能因权限限制(如安装目录为只读)导致WebView2无法创建必要文件,进而无法完成初始化和页面渲染
解决方案
为CoreWebView2CreationProperties指定一个程序拥有读写权限的UserDataFolder路径,修改后的代码如下:
webView.CreationProperties = new Microsoft.Web.WebView2.WinForms.CoreWebView2CreationProperties(); webView.CreationProperties.BrowserExecutableFolder = Properties.Resources.webview2_runtime_folder; webView.CreationProperties.UserDataFolder = _tempFolder; // 指定可读写的临时目录 webView.Source = new Uri(path);
注:WebView2运行时会在
UserDataFolder指定的路径下自动创建EBWebView子文件夹,用于存储运行所需的各类数据文件。
内容的提问来源于stack exchange,提问作者rrirower
相关产品推荐
相关产品推荐

