ASP.NET Core 2.1 : 十三.httpClient.GetAsync 報SSL錯誤的問題


不知什么時候 ,出現了這樣的一個奇怪問題,簡單的httpClient.GetAsync("xxxx")居然報錯了。(ASP.NET Core 系列目錄

一、問題描述

把原來的程序從2.0升級到2.1,突然發現原本正常運行的httpClient.GetAsync("xxxx")居然不工作了。

為了排除項目中其他引用的干擾,新建了一個干凈的2.1的項目,Main里直接調用

var client = new HttpClient(); var task = client.GetAsync(url);

依然是報錯。

錯誤信息如下:

System.AggregateException: One or more errors occurred. (The SSL connection could not be established, see inner exception.) ---> System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception. --->
Interop+Crypto+OpenSslCryptographicException: error:2006D002:BIO routines:BIO_new_file:system lib
   at Interop.Crypto.CheckValidOpenSslHandle(SafeHandle handle)
   at Internal.Cryptography.Pal.StorePal.LoadMachineStores()
   at *****************************************

 

原本以為是升級runtime的時候出錯了,重新安裝后依然是這樣。

系統環境:

OS:CentOS 7

Host (useful for support):
  Version: 2.1.2
  Commit:  811c3ce6c0

.NET Core runtimes installed:
  Microsoft.AspNetCore.All 2.1.2 [/usr/share/dotnet/shared/Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.App 2.1.2 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 2.1.2 [/usr/share/dotnet/shared/Microsoft.NETCore.App]

 

偶然發現,通過dotnet命令運行對應的dll可以正常運行:

dotnet  ......xx/xx/test.dll

但通過 /etc/systemd/system/kestrel-test.service 這樣的服務啟動的情況下依然報錯。

每次都通過dotnet命令運行肯定是不合適的,繼續想辦法。

 

二、解決方法

這是因為在 /etc/ssl/certs 目錄下存在沒有讀取權限或者已損壞的文件導致的,查看一下這個文件夾確實最近幾天有新文件寫入,可能是最近安裝什么進來的吧。

沒有一個個的試驗,臨時把這個文件夾的公共權限設置了可讀,可以正常運行了,算是個臨時方法吧,這樣開權限肯定不是一個好辦法,

據說在新版本中會修復, 重新刷了一下 yum update 也沒有新的,官網看看也還沒2.1.3的runtime。希望新版本中 早點把這個問題修復。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM