是否可以在.NET 4.0框架上使用TLS1.2发送HttpWebRequest

我的应用程序连接到Experian服务器,Experian将很快停止支持TLS 1.0TLS 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