You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 12:40:36