Cef 因系統時間不正常,致使頁面訪問空白問題

當咱們的系統時間不正常,好比設置一個日期-1999年9月9日,會引起證書問題。html

系統時間不正常-IE有機率能訪問

觸發NavigateError事件,異常代碼INET_E_INVALID_CERTIFICATE瀏覽器

-- 這是一個必要不充分條件,系統時間不正常時IE有相關證書異常,更新時間能解決此類異常app

系統時間不正常-Cef徹底沒法訪問

1.使用Cef-Demo,異常顯示以下:ide

2.ChromiumWebBrowser控件,此類異常也會觸發LoadError事件post

異常Code是CefErrorCode.Aborted,文件下載取消等異常信息也是Aborted類型,因此沒法判斷當前異常是否證書相關異常。this

那麼有沒有Cef瀏覽器有沒有其它相關異常事件,能夠準確獲知相關證書異常呢?url

Cef系統時間不正常的修復方案

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添加設置 ,見:

相關文章
相關標籤/搜索