当我尝试使用https方向调用远程站点上的REST服务时,出现以下错误:
基础连接已关闭:发送时发生意外错误。
这是我的代码:
public MyWebRequest(string url, string method, string data)
{
Uri uri = new Uri(url);
HttpWebRequest request = WebRequest.Create(uri) as HttpWebRequest;
request.ContentType = "application/json";
request.Method = method;
request.ContentLength = data.Length;
string base64Credentials = GetEncodedCredentials(); // check below
request.Headers.Add("Authorization", "Basic " + base64Credentials);
System.Net.ServicePointManager.ServerCertificateValidationCallback +=
delegate(object sender, System.Security.Cryptography.X509Certificates.X509Certificate certificate,
System.Security.Cryptography.X509Certificates.X509Chain chain,
System.Net.Security.SslPolicyErrors sslPolicyErrors)
{
return true; // **** Always accept
};
// -------------> The next line makes the error <------------------
using (StreamWriter writer = new StreamWriter(request.GetRequestStream()))
{
writer.Write(data);
}
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
string result = string.Empty;
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
result = reader.ReadToEnd();
}
Console.Write("Resultado: "+result);
}
此外,我已添加下一条指令以禁用https方向的证书验证,但它不起作用...
System.Net.ServicePointManager.ServerCertificateValidationCallback +=
delegate(object sender, System.Security.Cryptography.X509Certificates.X509Certificate certificate,
System.Security.Cryptography.X509Certificates.X509Chain chain,
System.Net.Security.SslPolicyErrors sslPolicyErrors)
{
return true;
};