码迷,mamicode.com
首页 > 其他好文 > 详细

Cef 因系统时间不正常,导致页面访问空白问题

时间:2019-11-21 12:06:27      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:strong   cer   load   导致   文件   如何   异常   html   handle   

当我们的系统时间不正常,比如设置一个日期-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 因系统时间不正常,导致页面访问空白问题

标签:strong   cer   load   导致   文件   如何   异常   html   handle   

原文地址:https://www.cnblogs.com/kybs0/p/11904417.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!