请求被中止:无法创建 SSL/TLS 安全通道。System.Net.WebException
Posted
技术标签:
【中文标题】请求被中止:无法创建 SSL/TLS 安全通道。System.Net.WebException【英文标题】:The request was aborted: Could not create SSL/TLS secure channel.System.Net.WebException 【发布时间】:2016-04-28 22:51:58 【问题描述】:我正在使用 NopCommerce 的 PayPalStandard 插件。当我在paypal上成功付款后下订单并使用paypalstandard插件付款时,它会重定向到商家网站。当时它给出了错误:
请求被中止:无法创建 SSL/TLS 安全通道。
我也在使用 Paypal 的 Sandbox 帐户进行测试。
它从这一行抛出错误:
var sw = new StreamWriter(req.GetRequestStream()
下面是代码:
var req = (HttpWebRequest)WebRequest.Create(GetPaypalUrl());
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ProtocolVersion = HttpVersion.Version10;
string formContent = string.Format("cmd=_notify-synch&at=0&tx=1", _paypalStandardPaymentSettings.PdtToken, tx);
req.ContentLength = formContent.Length;
using (var sw = new StreamWriter(req.GetRequestStream(), Encoding.ASCII))
sw.Write(formContent);
【问题讨论】:
大约一天前我开始看到这种情况。 sandbox.paypal.com的证书可能有问题? 9-10 个月前它不会在沙盒中引发任何错误。是沙盒的问题吗? 此代码也成功地与贝宝帐户一起使用。它仅发生在沙盒帐户中。所以是沙盒账号的问题? 【参考方案1】:我在连接到沙盒 (nvp) 时遇到了同样的问题,一切都很好,然后昨天消息“请求被中止:无法创建 SSL/TLS 安全通道。”出现了。
我相信 PayPal 已于 2016 年 1 月 19/20 日更新了他们的端点以使用 TSL 1.2 和 HTTP 1.1。
要解决此问题,对于 .NET 4.5 及更高版本,请在调用 WebRequest.Create() 之前添加以下代码行。
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
【讨论】:
非常感谢@nqynik。这解决了我的问题。 这个答案对我也有帮助。您应该在答案中添加一件事:SecurityProtocolType.Tls12
仅在 .NET 4.5 或更高版本中可用,因此如果目标框架是 .NET 4.0,那么您将需要更改目标框架。
你是救世主。希望微软更新其 PayPal 教程!!1
如果您使用的是 .Net 4.0,那么您将无法获得 SecurityProtocolType.Tls12 的选项,在这种情况下,您可以使用以下代码:ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; // SecurityProtocolType.Tls12 在这个链接中给出-***.com/questions/34939523/…【参考方案2】:
PayPal 博客文章Upcoming Security Changes Notice 中列出了对我们有用的答案。帖子中列出了许多内容,但我们所做的并且有效的一件事是 PayPal SDK 更新。我们使用 NuGet 进行了更新,一切都重新开始工作。
【讨论】:
以上是关于请求被中止:无法创建 SSL/TLS 安全通道。System.Net.WebException的主要内容,如果未能解决你的问题,请参考以下文章
请求被中止:无法为 HttpWebRequest 创建 SSL/TLS 安全通道
Braintree 中的“请求被中止:无法创建 SSL/TLS 安全通道”错误
请求被中止:无法创建 SSL/TLS 安全通道 - 没有证书