当我在本地主机上运行应用程序时,它能够正常工作,但是当我将其发布到Azure后,我的请求就停止工作了。出现错误:“请求被中止:无法创建SSL/TLS安全信道。”
我有一个调用外部商业Soap-API的应用程序。外部API要求在进行请求时传递客户端证书,并需要将我的IP地址列入白名单。
商业API已经将我从我的应用服务/属性/出站和虚拟IP地址中获得的IP地址列入白名单。 我已经将客户端证书文件(.p12)添加到解决方案中的一个文件夹中,并且在检查上传到Azure的文件时,我也可以看到它。
使用RestSharp,我的请求如下:
我有一个调用外部商业Soap-API的应用程序。外部API要求在进行请求时传递客户端证书,并需要将我的IP地址列入白名单。
商业API已经将我从我的应用服务/属性/出站和虚拟IP地址中获得的IP地址列入白名单。 我已经将客户端证书文件(.p12)添加到解决方案中的一个文件夹中,并且在检查上传到Azure的文件时,我也可以看到它。
使用RestSharp,我的请求如下:
private string RequestToBv(string pXml)
{
X509Certificate2 cert = new X509Certificate2(bvCertificatePath, bvCertificatePassword);
var client = new RestClient(mXmlApiUrl); //mXmlApiUrl = url to endpoint
client.Timeout = -1;
client.ClientCertificates = new X509CertificateCollection() { cert };
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/xml");
request.AddParameter("application/xml", pXml, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
if (response.StatusCode == HttpStatusCode.OK)
{
return response.Content;
}
return "";
}
在Azure中调试时,我得到了StatusCode = 0和错误消息:“请求已中止:无法创建SSL/TLS安全通道。”
在搜索stackoverflow寻找答案后,我不得不在我的方法顶部添加以下代码行:ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, errors) => true;
但我仍然收到相同的错误响应。
我需要在Azure中设置任何设置或以某种方式安装我的客户端证书在Azure上吗?