Ошибка аутентификации во время 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:
Но бесполезно, все равно получаю ту же ошибку. Любая проблема в моем коде?
1 ответ
Решение
Эта проблема решена после изменения ServicePointManager.SecurityProtocol, как показано ниже:
ServicePointManager.SecurityProtocol = (SecurityProtocolType)768 | (SecurityProtocolType)3072;
Как и Tls 1.1, 1.2 недоступны в.net framework 4.0 непосредственно в System.Net.