繁体   English   中英

使用HttpWebRequest在C#中的request.GetResponse()期间身份验证失败

[英]Authentication failed during request.GetResponse() in C# using HttpWebRequest

我正在使用C#、. Net Framework 4.0并尝试对Http Basic身份验证执行HttpWebRequest并出现以下错误:


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中尝试了所有引用:

身份验证失败,因为从Web服务获得响应时,远程方已关闭传输流异常

带有内部异常的HttpWebrequest失败身份验证失败,因为远程方已关闭传输流

但是没有用,仍然会出现同样的错误。 我的代码有问题吗?

如下更改ServicePointManager.SecurityProtocol后,此问题得以解决:

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

由于Tls 1.1、1.2在.net Framework 4.0中无法直接在System.Net中使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM