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

来源:https://www.cnblogs.com/kybs0/archive/2019/11/21/11904417.html

當我們的系統時間不正常,比如設置一個日期-1999年9月9日,會引發證書問題。 系統時間不正常-IE有概率能訪問 觸發NavigateError事件,異常代碼INET_E_INVALID_CERTIFICATE -- 這是一個必要不充分條件,系統時間不正常時IE有相關證書異常,更新時間能解決此類異常 ...


當我們的系統時間不正常,比如設置一個日期-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添加設置 ,見:

 


您的分享是我們最大的動力!

更多相關文章
一周排行
  • 前言 上一篇文章介紹IOptions的註冊,本章我們繼續往下看 IOptions IOptions是一個介面裡面只有一個Values屬性,該介面通過OptionsManager實現 OptionsManager OptionsManager實現了IOptions和IOptionsSnapshot,他 ...
  • 在 EF 里有個 `ShadowProperty` (陰影屬性/影子屬性)的概念,你可以通過 FluentAPI 的方式來定義一個不在 .NET model 里定義的屬性,只能通過 EF 里的 `Change Tracker` 來操作這種屬性。 在導出 Excel 的時候,可能希望導出的列並不... ...
  • 使用NPOI操作Excel,無需Office COM組件 部分代碼來自於:https://docs.microsoft.com/zh-tw/previous-versions/ee818993(v=msdn.10)?redirectedfrom=MSDN using System.Data; usi ...
  • Spire.Cloud.Word.Sdk提供了介面SetBackgroudColor()、SetBackgroudImage()、DeleteBackground()、GetBackgroudColor()用於設置、刪除及讀取Word文檔背景。本文將以C#程式為例演示如何來調用API介面實現以上內容 ...
  • 說明:在同一視窗打開鏈接,只要稍加改造就可以實現,這裡實現的是在新Tab頁打開鏈接,並且支持帶type="POST" target="_blank"的鏈接 github和bitbucket上相關問題: 1、WPF empty POST data when using custom popup htt ...
  • 前言 公司項目需要做個畫線縮放,我司稱之為瞳距縮放,簡而言之就是:2張圖,從第一張圖畫一條線,再從第二個圖畫一條線,第二條線以第一條為基準,延長到一致的長度,並同比縮放圖片;文字太枯燥,請先實例圖 例子1:以皮卡丘為例,我要把路飛的拳頭縮放到皮卡丘頭那麼大 例子2:以皮卡丘的基準,縮小路飛,與其身高 ...
  • 9月份的時候,微軟宣佈正式發佈C 8.0,作為.NET Core 3.0發行版的一部分。C 8.0的新特性之一就是預設介面實現。在本文中,我們將一起來聊聊預設介面實現。 作者:依樂祝 原文鏈接:https://www.cnblogs.com/yilezhu/p/12034584.html 提前說下: ...
  • 對於地圖坐標偏移,以leaflet為例,有如下解決辦法 方法1、修改leaflet源碼,解決地圖坐標偏移問題 方法2、將點位真實的經緯度經過偏移演算法,添加到加密的地圖上 方法3、直接對離線地圖瓦片進行糾偏 方法1需要修改源碼 方法2有缺陷,地圖依然是偏移的,如果把地圖經緯度顯示出來,經緯度也是不對的 ...
  • 引用類庫 1.Install-Package Microsoft.Extensions.Caching.Memory MemoryCacheOptions 緩存配置 1.ExpirationScanFrequency 獲取或設置對過期項的連續掃描之間的最短時間間隔 2.SizeLimit 緩存是沒有 ...
  • 原文:https://blogs.msdn.microsoft.com/mazhou/2017/12/12/c-7-series-part-7-ref-returns/ 背景 有兩種方法可以將一個值傳遞給一個方法: 例如,FCL(.NET Framework Class Library)中的Arra ...
x