Ошибка аутентификации во время request.GetResponse() в C# с использованием HttpWebRequest

Я использую C#, .Net Framework 4.0 и пытаюсь сделать HttpWebRequest для Http Basic Authentication и получаю сообщение об ошибке ниже:


Inner Exception 1:
IOException: Authentication failed because the remote party has closed the transport stream.

Я использую ниже код:


string svcCredentials = Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(userName + ":" + password));
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Headers.Add("Authorization", "Basic " + svcCredentials);
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls;
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
    html = reader.ReadToEnd();
}

Ошибка во время GetResponse().

Я перепробовал все ссылки в SO:

Ошибка аутентификации, поскольку удаленная сторона закрыла исключение транспортного потока при получении ответа от веб-службы

Сбой HttpWebrequest с внутренним исключением. Проверка подлинности завершилась неудачно, поскольку удаленная сторона закрыла транспортный поток.

Но бесполезно, все равно получаю ту же ошибку. Любая проблема в моем коде?

1 ответ

Решение

Эта проблема решена после изменения ServicePointManager.SecurityProtocol, как показано ниже:

ServicePointManager.SecurityProtocol = (SecurityProtocolType)768 | (SecurityProtocolType)3072;

Как и Tls 1.1, 1.2 недоступны в.net framework 4.0 непосредственно в System.Net.

Другие вопросы по тегам