В настоящее время я интегрируюсь с системой, созданной сторонней стороной. Эта система требует от меня отправки запроса с использованием XML/HTTPS. Третья сторона посылает мне сертификат и я установил егоПроблемы с WebClient + HTTPS
Я использую следующий код:
using (WebClient client = new WebClient())
{
client.Headers.Add(HttpRequestHeader.ContentType, "text/xml");
System.Text.ASCIIEncoding encoding=new System.Text.ASCIIEncoding();
var response = client.UploadData(address, "POST", encoding.GetBytes(msg));
}
Этот код возвращает следующие WebException
:
Базовое соединение закрыто: не удалось установить доверия для защищенного канала SSL/TLS.
UPDATE Поскольку это тестовый сервер, я работаю с, сертификат не является доверенным и проверка не пройдена ... Для того, чтобы обойти это в тест/отладки окружающей среды, создать новый ServerCertificateValidationCallback
ServicePointManager.ServerCertificateValidationCallback += new System.Net.Security.RemoteCertificateValidationCallback(bypassAllCertificateStuff);
и вот мой «подделка» обратный вызов
private static bool bypassAllCertificateStuff(object sender, X509Certificate cert, X509Chain chain, System.Net.Security.SslPolicyErrors error)
{
return true;
}
+1 для обновления с кодом, который вы использовали. Из-за этого приятно быстро исправить ситуацию. –
Это было очень полезно, а не регистрировать корень CA-скрипта в моей dev-машине при отладке веб-сервисов SSL! Я просто положил #if DEBUG вокруг части, которая добавила ответный фиктивный код, чтобы не помещать его в производственный код. – jishi
Go [здесь.] (Http://forums.asp.net/p/1174025/1972251.aspx) – Lonzo