|
|
首页
>> 帮助中心>> 服务器相关问题 |
|
|
| |
Win32Exception (0x80004005): 因为算法不同,客户端和服务器无法通信。 WebException: 基础连接已经关闭: 接收时发生错误。 HttpRequestException: 发送请求时出错。 AggregateException: 发生一个或多个错误。
解决办法(优先级从高到低)
代码里强制使用 TLS 1.2(推荐) 在程序启动时(最好在最早的入口,例如 Program.Main 或 Global.asax Application_Start)加下面任一行: C# // 适用于 .NET Framework 4.5+ / .NET 6+ 大部分场景 System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12 // | System.Net.SecurityProtocolType.Tls13 ← 2026年可以先不要加这个 ; 或者更保险的写法(兼容老代码): C# System.Net.ServicePointManager.SecurityProtocol |= System.Net.SecurityProtocolType.Tls12; 如果你用的是 HttpClient(推荐做法): C# var handler = new HttpClientHandler(); // handler.SslProtocols = SslProtocols.Tls12; // .NET Framework / .NET 5+ 都可以 var client = new HttpClient(handler); 加完后重新部署测试。 如果不能改代码 / 想全局生效(影响整机所有 .NET 程序) 修改注册表(Server 端和 Client 端都建议改,改完重启): 路径: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 新建 DWORD 值: 64位系统还要改 Wow6432Node 下同路径(如果你的程序是 32 位): HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319 这两个值设为 1 后,.NET 会优先使用系统最新的 TLS 行为,但配合系统默认偏好 TLS 1.2 的环境最稳定。 Windows 层面强制禁用 TLS 1.3(不推荐长期用,但可用于快速验证) 注册表路径: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Client HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Server 新建 DWORD: 重启后 TLS 1.3 被禁用,强制降级到 1.2。 Enabled = 0 DisabledByDefault = 1
打印
|
|
| |