【发布时间】:2018-05-26 09:08:56
【问题描述】:
您好,我正在尝试对网站执行 HttpRequest,当我致电 GetRequestStream() 时,我不断收到此错误。
我的代码:
byte[] data = Encoding.ASCII.GetBytes(myJson);
// Create a request for the URL.
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
ServicePointManager.Expect100Continue = true;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(
"https://host-address.com:443");
request.ServerCertificateValidationCallback += (sender, certificate2, chain, sslPolicyErrors) => {
return true;
};
X509Certificate2Collection certificates = new X509Certificate2Collection();
certificates.Import("C:\\Certs\\MyCertificate.pfx", "myCertPassword", X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet);
request.ClientCertificates = certificates;
request.Method = "POST";
request.ContentType = "text/json";
request.ContentLength = data.Length;
request.UserAgent = "My User Agent";
request.ProtocolVersion = HttpVersion.Version11;
request.KeepAlive = true;
Console.WriteLine("Requesting connection....");
//The exception is thrown here
using (Stream stream = request.GetRequestStream()) //Here's where the exception happens
{
stream.Write(data, 0, data.Length);
}
我已经尝试过这个 Could not create SSL/TLS secure channel, despite setting ServerCertificateValidationCallback 但似乎不起作用,还将委托 ServerCertificateValidationCallback 设置为始终返回 true,但它甚至没有达到那部分。
这可能是密码问题? 由于我在 chrome 上浏览页面时可以得到页面的响应,而不是在 IE 上浏览。
【问题讨论】:
标签: .net ssl certificate httprequest protocols