问题描述
我有一个在 Visual Studio 2013 中开发的 Windows VB 应用程序,它结合了 CefSharp Chromium Web 浏览器(使用 NuGet 包的版本 86.0.241)。目标 cpu 设置为 x86,构建输出路径设置为 bin\x86\debug,配置设置为活动(调试),平台设置为活动 (x86)。 Web 浏览器在开发机器上运行良好,但当我将应用部署到目标机器(服务器)时,浏览器显示空白屏幕并冻结。
CefSharp 支持文件包含在部署包 (InnoSetup) 中,但我对我需要部署哪个版本的 VC++ 可再发行组件感到困惑。CefSharp FAQ 指出,对于 65.0.0 及更高版本,VC 的最低要求++2015 需要部署。我让客户端在目标机器上安装了这个版本(当我最初部署这个应用程序时,我没有包含 VC++ 可再发行组件),但浏览器仍然无法工作。我需要部署不同的版本吗?
关于我做错了什么还有其他想法吗?请帮忙!
拉里
以下是 .zip 文件的链接,其中包含来自客户端的三台服务器(三台服务器根据需要轮换)的 CEF debug.log 文件:
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
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)