是否可以在.NET 4.0框架上使用TLS1.2发送HttpWebRequest
我的应用程序连接到Experian服务器,Experian将很快停止支持TLS 1.0
和TLS 1.1
。 使用HTTPS
所有连接必须使用TLS Version 1.2
。
我想对该问题进行一些研究,并看到在.NET 4.0 framework
上使用TLS 1.2
发送HttpWebRequest
如果没有,我可能需要在.NET 4.5
上创建一个webservice
服务并调用它的方法,如果有的话,我没有任何东西。
有人已经面临过这个问题吗?
是的,它支持它,但您必须在ServicePointManager
上显式设置TLS版本。 只需在调用Experian之前随时(在相同的应用程序域中)运行此代码:
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12
更新
请参阅@iignatov的答案,了解您必须为框架v4.0做些什么。 我的代码适用于4.5+
我不得不处理同样的问题,同时将PayPal集成到遗留应用程序中,并发现.NET 4.0的以下解决方法似乎可以解决这个问题:
ServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; ServicePointManager.DefaultConnectionLimit = 9999;
基本上解决方法是直接为TLS 1.2分配端口。
所有功劳都归功于CodeProject的评论者。
不幸的是,你不能这样做。 直到.netfx 4.5才添加Tls12(参见文档 )。 请注意,这还需要Windows Server 2008 R2 +或Windows 7+才能正常运行(请注意引入TLS的“适用于”部分)。
iignatov答案的VB.NET翻译:
ServicePointManager.Expect100Continue = True ServicePointManager.SecurityProtocol = CType(3072, SecurityProtocolType) ServicePointManager.DefaultConnectionLimit = 9999