HttpWebRequest:请求被中止:无法创建 SSL/TLS 安全通道

Posted

技术标签:

【中文标题】HttpWebRequest:请求被中止:无法创建 SSL/TLS 安全通道【英文标题】:HttpWebRequest: The request was aborted: Could not create SSL/TLS secure channel 【发布时间】:2016-06-30 14:25:06 【问题描述】:

我正在制作一个 asp.net 网络表单应用程序,它提供使用贝宝付款。该应用程序应该使用 ssl。当我运行我的应用程序时一切顺利,直到我选择我的按钮通过贝宝付款。当我按下此按钮时,会出现以下错误:

请求被中止:无法创建 SSL/TLS 安全通道。

描述:执行过程中发生了未处理的异常 当前的网络请求。请查看堆栈跟踪以获取更多信息 有关错误的信息以及它在代码中的来源。

异常详细信息:System.Net.WebException:请求被中止: 无法创建 SSL/TLS 安全通道。

来源错误:

Line 203: Line 204: //检索从 NVP API 调用 PayPal。第 205 行:HttpWebResponse objResponse = (HttpWebResponse)objRequest.GetResponse();第 206 行:字符串 结果;第 207 行:使用 (StreamReader sr = new StreamReader(objResponse.GetResponseStream()))

源文件:C:\Users\willem\documents\visual studio 2015\Projects\WingtipToys\WingtipToys\Logic\PayPalFunctions.cs 线路:205

在我发生错误的方法下方

public string HttpCall(string NvpRequest)

    string url = pEndPointURL;

    string strPost = NvpRequest + "&" + buildCredentialsNVPString();
    strPost = strPost + "&BUTTONSOURCE=" + HttpUtility.UrlEncode(BNCode);

    HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(url);
    objRequest.Timeout = Timeout;
    objRequest.Method = "POST";
    //objRequest.ContentLength = strPost.Length;

    try
    
        using (StreamWriter myWriter = new StreamWriter(objRequest.GetRequestStream()))
        
            myWriter.Write(strPost);
        
    
    catch (Exception)
    
        // No logging for this tutorial.
    

    //Retrieve the Response returned from the NVP API call to PayPal.
    HttpWebResponse objResponse = (HttpWebResponse)objRequest.GetResponse();
    string result;
    using (StreamReader sr = new StreamReader(objResponse.GetResponseStream()))
    
        result = sr.ReadToEnd();
    

    return result;

【问题讨论】:

您是否安装了调用端点所需的 SSL 证书? 当 Windows 询问我时,我相信我做到了:您愿意信任 IIS Express SSL 证书并继续吗?然后:你想安装这个证书吗?我都回答是的。 我指的是您尝试为其创建 Web 请求的端点。当您使用浏览器浏览该服务端点时,它是否会为您提供已在您的工作站上本地安装/信任的证书? 当我将 url 复制到浏览器时,我收到以下消息:ACK=Failure&L_ERRORCODE0=81002&L_SHORTMESSAGE0=Unspecified%20Method&L_LONGMESSAGE0=Method%20Specified%20is%20not%20Supported&L_SEVERITYCODE0=Error 这是您的问题的答案?我以前从未使用过 ssl,所以如果我不清楚,我很抱歉 您的代码 sn-p 没有根据我的判断指定要使用的安全协议 - 例如:ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;这里有一个相关的话题,我想你也需要看看problems-with-paypal-api-http-call 【参考方案1】:

据我所知,您的代码 sn-p 没有指定要使用的安全协议 -

例子:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

我在查看了针对 paypal api 的不同身份验证方法后发现了这一点。

这里有一个值得称赞的相关主题。 problems-with-paypal-api-http-call

注意:此答案是在原始 OP 问题的 cmets 字符串之后添加的。

【讨论】:

以上是关于HttpWebRequest:请求被中止:无法创建 SSL/TLS 安全通道的主要内容,如果未能解决你的问题,请参考以下文章

请求中止无法创建 SSL/TLS 安全通道 - HttpWebRequest

HttpWebRequest :: GetResponse-请求已中止:无法创建SSL / TLS安全通道

发出请求时出错:请求被中止:无法创建 SSL/TLS 安全通道

请求被中止:无法创建 SSL/TLS 安全通道 - 没有证书

“请求被中止:无法创建 SSL/TLS 安全通道”

HttpClientHandler / 请求被中止:无法创建 SSL/TLS 安全通道