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

时间:2016-03-15 08:46:57

标签: c# asp.net ssl paypal httpwebrequest

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

  

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

     

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

     

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

     

来源错误:

     

第203行:第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 \项目\ WingtipToys \ WingtipToys \逻辑\ 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;
}

1 个答案:

答案 0 :(得分:7)

您的代码段未指定我可以使用的安全协议 -

示例:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

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

这里有一个相关的话题值得信赖。 problems-with-paypal-api-http-call

注意:在原始OP问题的一系列评论之后添加了这个答案。