[英]Could not create SSL/TLS secure channel. The client and server cannot communicate, because they do not possess a common algorithm
[英]TLS 1. 2 The client and server cannot communicate, because they do not possess a common algorithm
我有 TLS 1.2 的问题。 如果我在客户端机器上启用 tls1.0,它会工作,但不推荐。
异常是 - 客户端和服务器无法通信,因为它们没有通用算法 System.ComponentModel.Win32Exception (0x80004005):客户端和服务器无法通信,因为它们没有通用算法。
我的应用程序的目标框架是 .NET 4.6.2。
有两种可能的情况,就我而言,我使用了第二点。
如果您在生产环境中遇到此问题,并且可以轻松地将新代码部署到生产环境中,那么您可以使用以下解决方案。
您可以在进行 api 调用之前添加以下代码行,
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; // .NET 4.5
如果您无法部署新代码,并且希望使用生产中存在的相同代码来解决,则可以通过更改配置文件中的某些配置设置来解决此问题。 您可以在配置文件中添加任何一个。
<runtime>
<AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchUseStrongCrypto=false"/>
</runtime>
或者
<runtime>
<AppContextSwitchOverrides value="Switch.System.Net.DontEnableSystemDefaultTlsVersions=false"
</runtime>
这些是我解决问题的故障排除步骤。
<system.web>
<compilation debug="true" targetFramework="4.8" />
<httpRuntime targetFramework="4.8" />
检查已安装的 MySql.Data 和 MySql.Web 版本(为 6.9.9.0)
安装 MySql.Data 和 MySql.Web 并将其更新到版本 8.0.23
此时,我的本地 .NETweb 服务器可以与本地 MySql 服务器通信。 但是在部署到生产服务器(仅启用了 TLS 1.2)之后,会出现不同的错误消息。
Fail to load MySql.Data assembly
WRN: Assembly binding logging is turned OFF.
检查生产服务器下的MySql.Web.dll & MySql.Data.dll ...\\myapp\\bin
发现MySql.Data.dll还是6.9版本。
将 MySql.Data.dll v.8.0.23 复制并粘贴到生产服务器(从我的本地 bin 文件夹)。 它修复了生产服务器上的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.