SecurityProtocolTypeExtensions.Tls12;在当前上下文中不存在。

5

我正在更新现有的3.5 .net框架应用程序的安全协议,以使我的支付网关更加顺畅。我添加了以下代码

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolTypeExtensions.Tls12;

在我的Global.asax中的Application_Start中,但它给我编译时错误:

当前上下文中不存在“SecurityProtocolTypeExtensions”名称。

我正在遵循Microsoft提供的此链接:在Windows 7 SP1和Server 2008 R2 SP1上包含在.NET Framework 3.5.1中的TLS系统默认版本的支持
更新1:
也尝试了上面链接中所说的,将两个文件都添加到项目中,现在我得到了一个异常"System.NotSupportedException: 不支持请求的安全协议"。
更新2:
按照Jon Davies的建议尝试过,但仍然没有运气。仍然是相同的异常System.NotSupportedException
3个回答

8
文章中提到的解决方法如下:
引入源文件到你的项目中以支持TLS v1.2... 换句话说,你需要将文章中的SecurityProtocolTypeExtensionsSslProtocolExtensions类型添加到你自己的项目中。
这种方法有点不太优雅,但是必须使用它,因为TLS 1.2是在.NET 3.5之后发布的。
或者如果你想避免使用这些扩展并且不介意在代码中使用未标记的魔术数字,你可以忽略文章中的代码,直接设置以下内容:
System.Net.ServicePointManager.SecurityProtocol = (SecurityProtocolType)0x00000C00;

我应该把那段代码保存在哪里呢?因为它似乎是在System.Net命名空间中,这是.NET Core类。 - Abdul
或者,如果您更改命名空间以匹配您自己的项目,则它仍应该起作用。您也可以直接设置值,而无需使用文章中的代码 - 我已相应更新了我的答案。 - Jon Davies
你仍然看到SecurityProtocolTypeExtensions错误吗?你需要用其他任何一个解决方案替换你问题中的代码行。 - Jon Davies
让我们在聊天中继续这个讨论 - Jon Davies
2
非常感谢您,@Jon Davies 您让我节省了数天的工作时间,我使用了您的技巧,而不是针对 .Net 4.5,这真的很有用! - Stephen Sugumar
显示剩余6条评论

0

同时检查文件顶部是否使用了 System.Security.Authentication


0

我在一个使用VB.net的项目中遇到了同样的问题。 所以对于需要这个的人

ServicePointManager.SecurityProtocol = CType(&HC00, SecurityProtocolType)

你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心找到有关如何编写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接