簡體   English   中英

框架 4.6.1 上的 API 問題並使用 VS2017 部署

[英]Problem with API on framework 4.6.1 and deploy with VS2017

我有一個幾年前使用 4.5.2 框架和 VS2015 開發的網站。 在項目中集成了兩次技術更改(PDF 生成和郵件發送)之后,我不得不將框架的版本更改為 4.6.1。 這個變化主要是由於郵件發送系統,我們使用的是SenInBlue,它的API剛剛遷移到了V3版本,為了能夠使用最新的版本,我們必須使用VS2017。 當我在本地工作時,我沒有問題,但是當我通過 VS2017 部署我的站點時,一些 API 變得無法訪問並返回錯誤 500。如果我使用 VS2015 重做交付,API 沒有任何問題,但我不能使用 VS2015 不支持的 API 發送電子郵件。 下面是我的 WebApiConfig.cs 文件的內容和通過 VS2017 部署后無法訪問的 API 之一

WebApiConfig.cs

在此處輸入圖像描述

api

在此處輸入圖像描述

謝謝

問題本身沒有任何信息,甚至沒有記錄的異常,所以只能根據版本、日期和 6 年前的一個常見問題做出一些瘋狂的猜測

Visual Studio 版本無關緊要,它只是編輯器。 代碼在 .NET Framework 運行時上運行。 .NET Framework 4.5.2 很久以前就停止了支持。 .NET Framework 4.6.1 今年也不再支持,只是因為沒有受支持的 Windows 版本需要它。 所有受支持的 Windows 版本,包括 Windows Server 版本,都至少附帶 4.6.2。 事實上,我認為現在最低是 4.8。

由於這是新服務版本的網絡問題,我懷疑 SendInBlue 服務停止使用不安全的 SSLv3 和 TLS 1.x,比其他服務晚幾年。

要解決此問題,請將項目的目標更改為 4.6.2(盡管 4.8 會更好)並確保安裝了相關的 .NET Framework 運行時版本。 最好是 4.8。 這個版本已經有 3 年歷史了,其中包含對以前版本中發現的錯誤的修復。 到現在已經很穩定了。

2015 年 6 月 SSL v3 被棄用,因為它太容易破解。 到 2016 年,主要服務需要 TLS 1.2,谷歌、Azure、亞馬遜等很快就需要它。 PCI-DSS 比其他人更晚地提出了這個要求,但現在,不應該有任何站點或服務需要低於 TLS 1.2 的任何內容。

因此,.NET Framework 4.6 及更高版本禁用了 SSL v3。 他們直到 4.6.2 才開始自動使用 TLS 1.2。 從 4.6.2 開始,將使用操作系統支持的最佳可用協議。 如果操作系統支持 TLS 1.3(Windows 11 支持),則將使用 TLS 1.3。

.NET Framework 4.x 版本是二進制替換,這意味着安裝較新版本會替換較舊版本。 由於 .NET Framework Runtime 是通過 Windows Update 更新的,因此服務器很可能已經運行了最新的運行時。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM