HttpWebResponse req.GetResponse()失败

时间:2017-11-10 10:10:54

标签: c# httpwebrequest

我有以下问题。当我调用getResponse()方法时,我收到以下错误消息:基础连接已关闭:发送时出现意外错误。 (.Net Framework 4.0)

            HttpWebRequest req = (HttpWebRequest)WebRequest.Create("https://www.pegelonline.wsv.de/webservices/rest-api/v2/stations/Bonn.json");
            req.Method = WebRequestMethods.Http.Get;
            req.Accept = "application/json";
            req.ContentType = "application/json; charset=utf-8";

            string result = null;
            using (HttpWebResponse resp = req.GetResponse() as HttpWebResponse)
            {
                StreamReader reader = new StreamReader(resp.GetResponseStream());
                result = reader.ReadToEnd();}

1 个答案:

答案 0 :(得分:0)

将您的框架升级到支持的版本。最早支持的.NET版本是4.5.2,尽管你至少应该选择4.6。

如果您检查该网址,您会看到目标网站使用TLS1.2。 .NET 4.5中添加了TLS1.2支持。它成为4.6的默认值。 .NET 4.0只是支持TLS1.2

在不使用TLS1.2作为默认值的.NET版本中,您可以通过设置ServicePointManager.SecurityProtocol设置来请求它:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

在.NET 4.0中您可以使用hack并安装.NET 4.5.2运行时。 Tls12值不存在,但您仍可以设置数值:

ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;

我建议不要这样做。 4.0和4.5.2之间没有任何严重的兼容性问题。通过在4.5.2运行时运行4.0应用程序,您将获得所有这些但没有任何好处。