我正在尝试将下面的代码行添加到网站项目的Global.asax文件中。
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;
vs2012 IntelliSense显示Tls12定义存在。但构建版本显示该定义不存在(请参见屏幕截图)。
我已经尝试将System.Net.dll添加到项目的bin文件夹中,但是生成仍然失败。有什么办法可以解决这个问题吗?
7gcisfzg1#
仅在Framework 4.0上缺少安全协议类型.Tls11和安全协议类型.Tls12枚举值。安全协议类型数值:系统默认值(0)Ssl 3(48 - 0x 30)的最小值Tls(192 - 0xC 0)位寄存器框架4.0上缺少Tls 11(768 - 0x 300)框架4.0上缺少Tls 12(3072 - 0xC 00)在Framework 4.0上,如果要允许TLS 1.0、1.1和1.2,只需替换:
SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12
签署人:
(SecurityProtocolType)(0xc0 | 0x300 | 0xc00)
rseugnpd2#
TLS和如何避免连接错误。
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
我个人在我的.Net 4.0 Framework上用过一些asp经典文件:
ServicePointManager.SecurityProtocol = (SecurityProtocolType)(0xc0 | 0x300 | 0xc00);
https://blogs.perficient.com/2016/04/28/tsl-1-2-and-net-support/
busg9geu3#
您使用的是.net 4.0吗?您至少需要4.5才能使用它。您可以尝试更新您的web目标框架版本:TLS 1.2 in .NET Framework 4.0
xnifntxz4#
网站已经在.Net 4.5,后来手动更新编译〉TargetFramework从4.0到4.5修复了我的问题。这是更新后的配置
<compilation debug="true" targetFramework="4.5"> <assemblies> <add assembly="System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/> <add assembly="System.Net, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/> </assemblies> </compilation>
sy5wg1nm5#
关于您的应用程序(客户端)和您尝试连接的服务器将使用哪个版本的TLS。
直接引用自TLS的RFC 5246标准。
ClientHello
客户端希望在此会话期间进行通信的TLS协议的版本。这应该是客户端支持的最新(最高值)版本。
ServerHello
此字段将包含客户端在客户端hello中建议的最低值和服务器支持的最高值。ClientHello和ServerHello是具有在这里的标准中描述的字段的结构。
TL;DR
当使用System.Net.WebRequest时,您的应用程序将与服务器协商,以确定您的应用程序和服务器都支持的最高TLS版本,并使用它。
System.Net.WebRequest
关于你的问题
nhjlsmyf6#
对于vb.net服务点管理器。安全协议= DirectCast(&HC0或&H300或&HC00,安全协议类型)
6条答案
按热度按时间7gcisfzg1#
仅在Framework 4.0上缺少安全协议类型.Tls11和安全协议类型.Tls12枚举值。
安全协议类型数值:
系统默认值(0)
Ssl 3(48 - 0x 30)的最小值
Tls(192 - 0xC 0)位寄存器
框架4.0上缺少Tls 11(768 - 0x 300)
框架4.0上缺少Tls 12(3072 - 0xC 00)
在Framework 4.0上,如果要允许TLS 1.0、1.1和1.2,只需替换:
签署人:
rseugnpd2#
TLS和如何避免连接错误。
我个人在我的.Net 4.0 Framework上用过一些asp经典文件:
https://blogs.perficient.com/2016/04/28/tsl-1-2-and-net-support/
busg9geu3#
您使用的是.net 4.0吗?您至少需要4.5才能使用它。您可以尝试更新您的web目标框架版本:TLS 1.2 in .NET Framework 4.0
xnifntxz4#
网站已经在.Net 4.5,后来手动更新编译〉TargetFramework从4.0到4.5修复了我的问题。
这是更新后的配置
sy5wg1nm5#
关于您的应用程序(客户端)和您尝试连接的服务器将使用哪个版本的TLS。
直接引用自TLS的RFC 5246标准。
ClientHello
期间(客户端向服务器发出的第一个请求)客户端希望在此会话期间进行通信的TLS协议的版本。这应该是客户端支持的最新(最高值)版本。
ServerHello
期间(服务器响应的第一个请求)此字段将包含客户端在客户端hello中建议的最低值和服务器支持的最高值。
ClientHello
和ServerHello
是具有在这里的标准中描述的字段的结构。TL;DR
当使用
System.Net.WebRequest
时,您的应用程序将与服务器协商,以确定您的应用程序和服务器都支持的最高TLS版本,并使用它。关于你的问题
nhjlsmyf6#
对于vb.net服务点管理器。安全协议= DirectCast(&HC0或&H300或&HC00,安全协议类型)