當我們的系統時間不正常,比如設定一個日期-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添加設定 ,見:
- C# 以管理員權限洗掉檔案
- 如何創建應用程式清單檔案 App.Manifest,如何創建不帶清單的應用程式
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/101915.html
標籤:C#
上一篇:Winform中在使用VS+svn進行協同開發時添加參考時的相對路徑和絕對路徑的問題
下一篇:第2個word發布的博客
