当我们的系统时间不正常,比如设置一个日期-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,把相关事件暴露给外界调用

     public class ChromeBrowserRequestHandler : DefaultRequestHandler
{
/// <summary>
/// 证书异常
/// 有很多种,比如系统时间不正确引发证书异常 CertDateInvalid
/// </summary>
public event EventHandler<(string url, CefErrorCode errorCode)> CertificateError;
public override bool OnCertificateError(
IWebBrowser browserControl,
CefSharp.IBrowser browser,
CefErrorCode errorCode,
string requestUrl,
ISslInfo sslInfo,
IRequestCallback callback)
{
callback.Dispose();
//证书异常
CertificateError?.Invoke(this,(requestUrl,errorCode));
return false;
}
}

获取到证书异常的触发时机,如何解决系统时间不正常?

详见我的博客:C# 同步更新系统时间

注:更新系统时间,需要管理员权限。相关app.manifest添加设置 ,见:

Cef 因系统时间不正常,导致页面访问空白问题的更多相关文章

  1. &#65279导致页面顶部空白一行解决方法 【】

    2016年11月7日10:57:10 模板文件生成html文件之后会在body开头处加入一个可见的控制符&#65279,导致页面头部会出现一个空白行.原因是页面的编码是UTF-8 + BOM. ...

  2. &#65279导致页面顶部空白一行解决方法

    模板文件生成html文件之后会在body开头处加入一个可见的控制符&#65279,导致页面头部会出现一个空白行.原因是页面的编码是UTF-8 + BOM. 这种编码方式一般会在windows操 ...

  3. &#65279; 导致页面顶部空白一行

    模板文件生成html文件以后会在页面body开头处生成可见的控制符 导致页面头部出现一个空白行,导致这样的原因就是页面的编码格式是UTF-8 + BOM 解决方法,最简单的就是使用编辑器重新保存文件 ...

  4. jsp页面中,动态调用系统时间的实现

    在做WEB项目时,经常会须要 在页面中显示当前时间,以下介绍一个简单的调用系统时间的方法,效果如图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvczI5 ...

  5. C/C++ 修改系统时间,导致sem_timedwait 一直阻塞的问题解决和分析

    修改系统时间,导致sem_timedwait 一直阻塞的问题解决和分析 介绍 最近修复项目问题时,发现当系统时间往前修改后,会导致sem_timedwait函数一直阻塞.通过搜索了发现int sem_ ...

  6. jsp页面动态获取系统时间

    最近在做练习时碰到了这样一个问题:"读者选择查询图书相应信息,跳转到书目的详细信息界面,当可借阅数量大于零,点击借阅按钮,提示用户借阅成功,并显示归还日期(三个月),否则提示用户该书可借阅数 ...

  7. KingbaseES V8R3 由于修改系统时间导致sys_rman备份故障案例

    ​ 案例说明: 此案例,为复现"current time may be rewound"错误.对于数据库环境,在使用前必须保证系统时间的正确性.如果数据库创建后,再将系统时间修改为 ...

  8. [双系统linux] ----双系统切换导致系统时间错误

    安装了linux双系统以后,发现每次双系统切换以后系统时间总会错误. 原因:Linux和win7(win10)双系统时间错误问题 时间相差8小时 MAC/linux 将系统硬件时间看待为UTC, 即U ...

  9. 如何在jsp页面获取系统时间

    <%@ page import="java.util.*"%> //获取系统时间必须导入的 <%@ page import="java.text.*&q ...

随机推荐

  1. vc++中字符串的免杀

    一:格式字符: http://baike.baidu.com/view/2194593.htm d:以十进制形式输出带符号整数(正数不输出符号)o:以八进制形式输出无符号整数(不输出前缀o)x:以十六 ...

  2. [CF494B] Obsessive String

    Hamed has recently found a string t and suddenly became quite fond of it. He spent several days tryi ...

  3. qt实现串口通讯

    摘要:上位机软件程序通过QT实现,采集输入信息,根据实际需要做出合适的串口通讯协议,实现效果如下图所示: 主要实现的功能: 1.串口基本参数可选,可调 2.显示区域可选择十六进制/asicii码显示, ...

  4. 自定义的Spring Boot starter如何设置自动配置注解

    本文首发于个人网站: 在Spring Boot实战之定制自己的starter一文最后提到,触发Spring Boot的配置过程有两种方法: spring.factories:由Spring Boot触 ...

  5. 那些惊艳的 GIS 轮子

    一.前言 GIS 涉及测绘.几何拓扑.人文社科等多方面的科学知识.在 .Net 平台下有着许多优秀的开源产品,比如:MapWindow.SharpMap.WorldWind等.而在这其中,Coordi ...

  6. 一个html,3D 标签 鼓励自己

    效果如图: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w ...

  7. 元组/字典/集合内置方法+简单哈希表(day07整理)

    目录 二十三.元组内置方法 二十四.字典数据类型 二十五 集合内置方法 二十五.数据类型总结 二十六.深浅拷贝 补充:散列表(哈希表) 二十三.元组内置方法 什么是元组:只可取,不可更改的列表 作用: ...

  8. WinFrom中音频播放

    public void RightVoiceAndHint() { string path = CimsConstant.APLICATION_PATH + "wav\\Success.wa ...

  9. django-URL之path标准语法(三)

    path(route,vie,nane=None,**kwargs) route:表示路径,从端口以后URL的地址,到/结束.(必选) view:表示匹配成功后,需要调用的视图,view必须是个函数, ...

  10. 关于dt分组、计数、排序的实例

    #region table去重复求和 var query = dt.Rows.Cast<DataRow>() .OrderByDescending(n => n["OPER ...