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

WPF应用中使用CefSharp打开网页后程序因libcef.dll崩溃

WPF中使用CefSharp打开网页生产环境崩溃问题

问题详情

调试环境下WPF应用通过CefSharp打开网页正常,但生产环境中网页显示几秒后程序崩溃,Windows事件日志指向libcef.dll抛出异常。

相关代码

XAML代码

<Grid>
    <cefSharp:ChromiumWebBrowser Name="browser" Address="about:blank" HorizontalAlignment="Stretch"
                         VerticalAlignment="Stretch"
                         Width="Auto"
                         Height="Auto"/>
</Grid>

C#导航方法

public void Navigate(string url)
{
    browser.Address = url;
}

窗口调用代码

BrowserWindows browserWindows = new BrowserWindows();
browserWindows.Navigate(url);
browserWindows.Closed += (s, e) =>
    {
        if (OnWindowClosed != null)
        {
            OnWindowClosed(1, true, _paramString, _idperson);
        }
    };
browserWindows.Show();

Windows事件日志

Faulting application name: Test.exe, version: 6.0.0.135, time stamp: 0x6707d47d
Faulting module name: libcef.dll, version: 129.0.11.0, time stamp: 0x66fb0c5a
Exception code: 0x4000001f
Error offset: 0x04ea8352
Faulting process ID: 0x0x391C
Faulting application start time: 0x0x1DB1BBC15CD5A5C
Faulting application path: C:\Program Files (x86)\Test\Test.exe
Faulting module path: C:\Program Files (x86)\Test\libcef.dll
Report identifier: a1c6a7fb-e83b-4853-b6cc-a1c05b13494c
Full name of the faulting package:
Application ID relative to the faulting package:

已尝试操作

  • 将程序编译为x64架构,问题仍存在。

解决方案

  • 确保依赖文件完整部署:生产环境必须包含CefSharp对应的所有依赖文件,包括libcef.dll、icudtl.dat、locales文件夹、CefSharp.BrowserSubprocess.exe等,注意x86和x64版本不能混合,需与程序编译架构匹配。
  • 启用CefSharp日志排查:在应用初始化时开启详细日志,定位崩溃具体原因:
    public partial class App : Application
    {
        protected override void OnStartup(StartupEventArgs e)
        {
            var settings = new CefSettings();
            settings.LogSeverity = LogSeverity.Verbose;
            settings.LogFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "cef_debug.log");
            Cef.Initialize(settings);
            base.OnStartup(e);
        }
    
        protected override void OnExit(ExitEventArgs e)
        {
            Cef.Shutdown();
            base.OnExit(e);
        }
    }
    
  • 延迟导航时机:等待ChromiumWebBrowser完成初始化后再执行导航,避免未初始化完成时操作导致崩溃:
    // 在BrowserWindows的构造函数中添加
    browser.IsBrowserInitializedChanged += (s, e) =>
    {
        if (browser.IsBrowserInitialized && !string.IsNullOrEmpty(_pendingUrl))
        {
            browser.Address = _pendingUrl;
            _pendingUrl = null;
        }
    };
    
    // 修改Navigate方法
    private string _pendingUrl;
    public void Navigate(string url)
    {
        if (browser.IsBrowserInitialized)
        {
            browser.Address = url;
        }
        else
        {
            _pendingUrl = url;
        }
    }
    
  • 排查网页兼容性:尝试加载静态测试页面(如https://www.example.com),若不崩溃则说明原网页存在JS或资源加载问题,需排查网页代码是否触发CefSharp的已知bug。
  • 更新CefSharp版本:当前使用的129.0.11.0版本可能存在已知崩溃问题,升级至最新稳定版可以修复部分底层bug。
  • 检查运行权限:尝试以管理员身份运行生产环境程序,排除权限不足导致的资源访问失败问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 11:57:05