У меня есть способ загрузки в C#. Метод отправляет запрос на URL-адрес для загрузки. Но это дает ошибку для некоторого URL-адреса. У последнего URL-адреса, с которым я столкнулся, является exe-файл link.Исключение защищенного канала SSL/TSL при отправке HttpWebRequest
Мой метод:
void DownloadProcedure()
{
#region Request-Response
req = WebRequest.Create(url) as HttpWebRequest;
req.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)";
req.AllowAutoRedirect = true;
req.MaximumAutomaticRedirections = 5;
req.ServicePoint.ConnectionLimit += 2;
req.ServicePoint.Expect100Continue = true;
req.ProtocolVersion = HttpVersion.Version10;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
| SecurityProtocolType.Tls11
| SecurityProtocolType.Tls12
| SecurityProtocolType.Ssl3;
// allows for validation of SSL conversations
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
if (rangeAllowed)
req.AddRange(from, to);
resp = req.GetResponse() as HttpWebResponse;
#endregion
//...bla bla...
}
В этом коде на GetResponse()
линии он бросает Не удалось создать SSL/TSL безопасный канал. Но он не бросает его всегда. Иногда файл загружается успешно, и иногда он генерирует это исключение. Я не знаю, как правильно пройти через это.
Так как я могу исправить эту проблему
Во-первых, эта строка должна быть только для отладки. ServicePointManager.ServerCertificateValidationCallback = delegate {return true; }; Пожалуйста, не вводите этот код в производство. – granadaCoder
Используйте этот код, чтобы посмотреть на соответствующий сертификат. ServicePointManager.ServerCertificateValidationCallback = новый System.Net.Security.RemoteCertificateValidationCallback (( отправитель, серт, цепь, SSL) => { Console.WriteLine ("ServerCertificateValidationCallback для Cert.Subject: '{0}'", cert.Subject); System.Net.HttpWebRequest ГВР = отправитель, как System.Net.HttpWebRequest; если (нуль = ГВР) { SecurityShower.ShowHttpWebRequest (ГВР); }! SecurityShower.ShowCertAndChain (cert, chain); return true; }); – granadaCoder
Вы можете получить код ShowCertAndChain здесь: https://granadacoder.wordpress.com/2016/11/04/service-bus-and-custom-self-signed-certificates-with-a-high-availabilitymultiplecomputing-nodes -in-the-farm/ – granadaCoder