首页 > 解决方案 > 无法让 CefSharp Chromium 网络浏览器在目标 PC 上运行

问题描述

我有一个在 Visual Studio 2013 中开发的 Windows VB 应用程序,它包含一个 CefSharp Chromium Web 浏览器(使用 NuGet 包的版本 86.0.241)。Target CPU 设置为 x86,构建输出路径设置为 bin\x86\debug,Configuration 设置为 Active(调试),Platform 设置为 Active (x86)。Web 浏览器在开发机器上运行良好,但是当我将应用程序部署到目标机器(即服务器)时,浏览器显示空白屏幕并冻结。

CefSharp 支持文件包含在部署包 (InnoSetup) 中,但我对需要部署哪个版本的 VC++ 可再发行组件感到困惑。CefSharp 常见问题解答指出,对于 65.0.0 及更高版本,VC++2015 的最低版本需要部署。我让客户端在目标机器上安装了这个版本(当我最初部署这个应用程序时,我没有包含 VC++ 可再发行组件),但浏览器仍然无法工作。我需要部署不同的版本吗?

关于我做错了什么还有其他想法吗?请帮忙!

拉里

以下是包含来自客户端三台服务器的 CEF debug.log 文件的 .zip 文件的链接(三台服务器根据需要轮换):

https://www.dropbox.com/s/b3zjxxk79v9xl9b/DataMinerDebugLogs.zip?dl=0

请让我知道这些是否提供了 Chromium 浏览器仅显示空白页面的原因。

谢谢。

我上一条评论中提到的日志条目的详细信息:[1228/093028.760:INFO:CONSOLE(32)]“拒绝连接到‘https://collection.decibelinsight.net/i/13878/265573/c.json’,因为它违反了以下内容安全策略指令:“connect-src https://qbonline.api.intuit.net https://cdn.decibelinsight.net https://api.segment.io 'self' https:// 。 intuit.com https:// .intuit.com:* https:// .intuitcdn.net: https://hosted-shell-assets-us-west-2.s3.us-west-2.amazonaws.com wss ://plugin-localhost.intuitcdn.net:* wss://plugin.intuitcdn.net:* https:// .intuit.net wss:// .msg.liveperson.net/ws_api/account/ https:// *.objectstorage.liveperson.net/ https://scripts.neuro-id.com https://api.neuro-id.com https://logs.neuro-id.com".",来源:https ://cdn.decibelinsight.net/i/13878/265573/di.js (32)

来自 Auth 类的代码(打开并显示 Chromium 浏览器的表单):

Imports Intuit.Ipp.OAuth2PlatformClient
Imports System.Net
Imports System.IO
Imports System.Web
Imports CefSharp
Imports CefSharp.WinForms


Public Class Auth
    Public WithEvents Browser As ChromiumWebBrowser
    Dim Settings As New CefSettings
    Private Sub Auth_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        oauthClient = New OAuth2Client(ClientID, ClientSecret, RedirectURL, "production")
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
        Dim scopes As List(Of OidcScopes) = New List(Of OidcScopes)()
        scopes.Add(OidcScopes.Accounting)
        authorizeURL = oauthClient.GetAuthorizationURL(scopes)
        Settings.CefCommandLineArgs.Add("disable-gpu")
        Browser = New ChromiumWebBrowser(authorizeURL)
        Me.Controls.Add(Browser)
        Browser.Dock = DockStyle.Fill
    End Sub

    Private Sub Browser_AddressChanged(sender As Object, e As AddressChangedEventArgs) Handles Browser.AddressChanged
        Dim Str As String = Browser.Address
        If InStr(Str, "&realmID", CompareMethod.Text) Then
            Dim q = HttpUtility.ParseQueryString(Browser.Address)
            Dim Code As String = ""
            Dim RealmID As String = ""
            For Each key In q.Keys
                If InStr(key, "code") Then
                    Code = q.Item(key)
                ElseIf InStr(key, "realmId", CompareMethod.Text) Then
                    RealmID = q.Item(key)
                End If
            Next
            Call GetAuthTokens(Code, RealmID)
        End If
    End Sub
End Class

“Address_Changed”事件可以忽略,“Load”事件的前 5 行都与应用中使用的另一个 SDK 相关,均与 Chromium 浏览器无关。

添加了启动代码:

Shared Sub Main()
        'This sub executes first.
        Dim Settings As New CefSettings
        Settings.CefCommandLineArgs.Add("disable-gpu")
        cef.initialize(Settings)
        Application.EnableVisualStyles()
        Application.SetCompatibleTextRenderingDefault(False)
        Application.Run(New MainMenu)
    End Sub

标签: vb.netcefsharpchromium-embedded

解决方案


推荐阅读