Cef 因系统时间不正常,导致页面访问空白问题
Posted kybs0
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cef 因系统时间不正常,导致页面访问空白问题相关的知识,希望对你有一定的参考价值。
当我们的系统时间不正常,比如设置一个日期-1999年9月9日,会引发证书问题。
系统时间不正常-IE有概率能访问
触发NavigateError事件,异常代码INET_E_INVALID_CERTIFICATE
-- 这是一个必要不充分条件,系统时间不正常时IE有相关证书异常,更新时间能解决此类异常
系统时间不正常-Cef完全无法访问
1.使用Cef-Demo,异常显示如下:
2.ChromiumWebBrowser控件,此类异常也会触发LoadError事件
异常Code是CefErrorCode.Aborted,文件下载取消等异常信息也是Aborted类型,所以无法判断当前异常是否证书相关异常。
那么有没有Cef浏览器有没有其它相关异常事件,可以准确获知相关证书异常呢?
Cef系统时间不正常的修复方案
Cef有请求委托RequestHandler对象,可以在本地定制相关实现
_cefBrowser.RequestHandler = new ChromeBrowserRequestHandler();
新建ChromeBrowserRequestHandler,继承默认RequestHandler,把相关事件暴露给外界调用
1 public class ChromeBrowserRequestHandler : DefaultRequestHandler 2 { 3 /// <summary> 4 /// 证书异常 5 /// 有很多种,比如系统时间不正确引发证书异常 CertDateInvalid 6 /// </summary> 7 public event EventHandler<(string url, CefErrorCode errorCode)> CertificateError; 8 public override bool OnCertificateError( 9 IWebBrowser browserControl, 10 CefSharp.IBrowser browser, 11 CefErrorCode errorCode, 12 string requestUrl, 13 ISslInfo sslInfo, 14 IRequestCallback callback) 15 { 16 callback.Dispose(); 17 //证书异常 18 CertificateError?.Invoke(this,(requestUrl,errorCode)); 19 return false; 20 } 21 }
获取到证书异常的触发时机,如何解决系统时间不正常?
详见我的博客:C# 同步更新系统时间
注:更新系统时间,需要管理员权限。相关app.manifest添加设置 ,见:
以上是关于Cef 因系统时间不正常,导致页面访问空白问题的主要内容,如果未能解决你的问题,请参考以下文章
或第三方网站分享转发后,打开提示 “无法打开该页面,不支持打开” 或 “页面不存在”(IOS 苹果系统打开是空白页,安卓系统会有提示)超详细排查
EasyNVR 因 sqlite 数据库过大导致访问网页卡顿的优化方案