當咱們的系統時間不正常,好比設置一個日期-1999年9月9日,會引起證書問題。html
觸發NavigateError事件,異常代碼INET_E_INVALID_CERTIFICATE瀏覽器
-- 這是一個必要不充分條件,系統時間不正常時IE有相關證書異常,更新時間能解決此類異常app
1.使用Cef-Demo,異常顯示以下:ide
2.ChromiumWebBrowser控件,此類異常也會觸發LoadError事件post
異常Code是CefErrorCode.Aborted,文件下載取消等異常信息也是Aborted類型,因此沒法判斷當前異常是否證書相關異常。this
那麼有沒有Cef瀏覽器有沒有其它相關異常事件,能夠準確獲知相關證書異常呢?url
Cef有請求委託RequestHandler對象,能夠在本地定製相關實現spa
_cefBrowser.RequestHandler = new ChromeBrowserRequestHandler();3d
新建ChromeBrowserRequestHandler,繼承默認RequestHandler,把相關事件暴露給外界調用code
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添加設置 ,見: