当我们的系统时间不正常,比如设置一个日期-1999年9月9日,会引发证书问题。
触发NavigateError事件,异常代码INET_E_INVALID_CERTIFICATE
-- 这是一个必要不充分条件,系统时间不正常时IE有相关证书异常,更新时间能解决此类异常
1.使用Cef-Demo,异常显示如下:
2.ChromiumWebBrowser控件,此类异常也会触发LoadError事件
异常Code是CefErrorCode.Aborted,文件下载取消等异常信息也是Aborted类型,所以无法判断当前异常是否证书相关异常。
那么有没有Cef浏览器有没有其它相关异常事件,可以准确获知c#教程相关证书异常呢?
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 }
获取到证书异常的触发时机,如何解决系统时间不正常?
作者:唐宋元明清2188
联系客服