由于以下错误消息,我们无法使用WebRequest连接到HTTPS服务器:

The request was aborted: Could not create SSL/TLS secure channel.

我们知道服务器没有使用路径的有效HTTPS证书,但为了绕过此问题,我们使用以下代码,这些代码取自另一个StackOverflow帖子:

private void Somewhere() {
    ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(AlwaysGoodCertificate);
}

private static bool AlwaysGoodCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors policyErrors) {
   return true;
}

问题是服务器从未验证证书,并失败,并出现上述错误.有人知道我应该怎么做吗?


值得一提的是,我和一位同事在几周前进行了测试,使用类似于我上面所写的内容,它工作得很好.我们发现的唯一"主要区别"是我使用的是Windows7,而他使用的是Windows XP.这会改变什么吗?

推荐答案

我终于找到了答案(我没有指出我的来源,但它来自搜索);

当代码在Windows XP中运行时,在Windows 7中,必须在开头添加以下内容:

// using System.Net;
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
// Use SecurityProtocolType.Ssl3 if needed for compatibility reasons

现在,它工作得很好.


ADDENDUM

正如Robin French提到的;如果您在配置PayPal时遇到此问题,请注意,从2018年12月3日开始,PayPal将不再支持SSL3.您需要使用TLS.这是Paypal page美元左右.

Asp.net相关问答推荐

ASP.NET MVC项目中的产品采购并发性测试

如何在 ASP.NET 全球化中配置不变文化?

是否可以访问位于另一个项目中的 MVC 视图?

Window.Open 使用 PDF 流而不是 PDF 位置

如何使用 jQuery 设置 outerHTML

在asp.net mvc c#中使用cookie

将复选框的值传递给 asp.net mvc4 中的控制器操作

我需要更改什么以允许我的 IIS7 ASP.Net 3.5 应用程序创建事件源并将事件记录到 Windows EventLog?

HTTP 错误 503.该服务在简单的 ASP.NET 4.0 网站下不可用

如何在 IIS 7.5 上使用 ASP.NET 表单身份验证保护静态文件?

如何在 C# 中转换 TryCast?

MVC5 身份验证中的......与主域之间的信任关系失败

存在 ios 7 虚拟键盘时,div 元素不会停留在底部

如何在我自己的方法中模仿 string.Format()?

有没有办法在没有异常类的情况下抛出自定义异常

协调 ASP.NET 脚本包和源映射

验证请求事件

根据条件更改 GridView 行 colored颜色

回发后运行javascript函数

哪个事件先调用?母版页 Page_Load 或内容页 Page_Load