我正在制作一个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;
}
答案 0 :(得分:7)
您的代码段未指定我可以使用的安全协议 -
示例:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
我在针对paypal api查看不同的身份验证方法后发现了这一点。
这里有一个相关的话题值得信赖。 problems-with-paypal-api-http-call
注意:在原始OP问题的一系列评论之后添加了这个答案。