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

C# HttpWebRequest:请求被中止:无法创建SSL/TLS安全通道,c#,asp.net,ssl,paypal,httpwebrequest,C#,Asp.net,Ssl,Paypal,Httpwebrequest,我正在制作一个asp.net web表单应用程序,它提供使用paypal支付的功能。应用程序应该使用ssl。当我运行我的应用程序时,一切都很顺利,直到我选择我的按钮paypal。当我按下此按钮时,出现以下错误: 请求被中止:无法创建SSL/TLS安全通道 描述:在执行过程中发生未处理的异常 当前的web请求。请查看堆栈跟踪以了解更多信息 有关错误的信息及其在代码中的来源 异常详细信息:System.Net.WebException:请求已中止: 无法创建SSL/TLS安全通道 源错误: 第203

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

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

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

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

源错误:

第203行:第204行://检索从 NVP API调用贝宝。第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;
}

您的代码片段没有指定要使用的安全协议,我可以告诉您-

例如:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
我在查看了针对PayPalAPI的不同身份验证方法后发现了这一点

这里有一个相关的话题值得称赞


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

您是否安装了调用端点所需的SSL证书?我相信是在windows询问我时安装的:是否信任IIS Express SSL证书并继续?然后:是否要安装此证书?我的回答都是肯定的。我指的是您试图为其创建web请求的端点。使用浏览器浏览该服务端点时,它是否向您提供了您已经在工作站上本地安装/信任的证书?当我将url复制到浏览器时,会收到以下消息:ACK=Failure&L_ERRORCODE0=81002&L_SHORTMESSAGE0=Unspecified%20Method&L_longmesse0=Method%20指定的%20是%20不支持的&L_SEVERITYCODE0=Error这是你问题的答案吗?我以前从未使用过ssl,因此如果我不清楚,我很抱歉您的代码片段没有指定要使用的安全协议—例如:ServicePointManager.SecurityProtocol=SecurityProtocolType.Tls12;这里有一个相关的话题,我想你也需要看看