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

Windows端WebView2如何加载应用当前目录下的本地HTML文件

WebView2加载本地同目录HTML文件解决方案

问题根源

你原有代码无法正常运行的核心原因如下:

  • Directory.GetCurrentDirectory()获取的是进程工作目录,不等于应用程序程序集所在目录,当程序被第三方调用、用快捷方式启动时,工作目录会发生变化,无法稳定定位到exe所在目录
  • WebView2的CoreWebView2需要完成初始化后才能调用导航相关方法,你直接判断CoreWebView2 != null大概率返回false,所以你写的加载逻辑根本没有执行,才会出现空白页面、F12无法呼出的问题
  • 同时调用NavigateToString和设置Source属于重复操作,会互相覆盖
  • 直接用字符串拼接路径存在转义符兼容问题,应该用系统提供的路径拼接方法处理

正确实现步骤

1. 等待WebView2初始化完成

不要在Form构造或Load事件中直接执行导航逻辑,需要先确认CoreWebView2初始化完成后再操作。

2. 正确获取应用程序所在目录

用AppContext.BaseDirectory获取程序集所在的根目录,该路径永远指向exe所在文件夹,不受工作目录变化影响。

3. 生成标准File协议URI

本地文件需要转换成file://格式的URI传给WebView2,不要直接传文件系统路径。

完整可运行代码示例

替换你Form1.cs中的逻辑即可:

using Microsoft.Web.WebView2.WinForms;
using System.IO;

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        // 订阅初始化完成事件
        webView.CoreWebView2InitializationCompleted += WebView_CoreWebView2InitializationCompleted;
        // 触发WebView2初始化,不需要在属性面板设置Source
        _ = InitializeWebView();
    }

    private async Task InitializeWebView()
    {
        // 等待CoreWebView2初始化完成
        await webView.EnsureCoreWebView2Async();
        // 开启F12开发者工具权限
        webView.CoreWebView2.Settings.AreDevToolsEnabled = true;
    }

    private void WebView_CoreWebView2InitializationCompleted(object? sender, CoreWebView2InitializationCompletedEventArgs e)
    {
        if (!e.IsSuccess) return;
        
        // 获取exe所在目录
        string appRoot = AppContext.BaseDirectory;
        // 拼接HTML文件路径,自动兼容各种路径格式
        string htmlPath = Path.Combine(appRoot, "main.html");
        
        // 转换成标准File协议URI
        Uri htmlUri = new Uri(htmlPath);
        // 加载本地HTML
        webView.CoreWebView2.Navigate(htmlUri.ToString());
    }
}

额外配置

把项目中的main.html文件选中,在属性面板设置「复制到输出目录」为「如果较新则复制」,编译时会自动把HTML文件拷贝到exe所在目录,无需手动复制。
该方案会自动加载HTML中引用的相对路径CSS、JS、图片等资源,比NavigateToString方案更稳定。

内容的提问来源于stack exchange,提问作者Anthony LoPrimo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:54:05