【问题标题】:WebException: The underlying connection was closed: The connection was closed unexpectedlyWebException:底层连接已关闭:连接意外关闭
【发布时间】:2019-11-11 17:21:39
【问题描述】:

我正在编写一个简单的 winform 应用程序来从地址为 192.168.1.1 的本地调制解调器获取 http 响应:

这是我的代码:

using (var httpClient = new HttpClient())
{
          using (var request = new HttpRequestMessage(new HttpMethod("GET"), "http://192.168.1.1/"))
                {
                    var response = await httpClient.SendAsync(request);
                }
}

现在,当我运行应用程序时,出现以下异常:

WebException:底层连接已关闭:连接意外关闭。

注意:如果我将地址更改为外部 IP 地址,它可以正常工作,但不能与 192.168.1.1 一起使用。

我在不同的网站上搜索过,但找不到任何解决方案。

【问题讨论】:

  • 运行网页的调制解调器?
  • @BugFinder 几乎所有调制解调器和路由器都提供一个网页,您可以在其中更改设置等。
  • @BugFinder 是的,我正在尝试访问调制解调器网页。
  • @BertusvanZyl 取决于调制解调器,adsl 路由器/调制解调器是的,插入电话线中的纯调制解调器不会发出刺耳的噪音。

标签: c# httpclient


【解决方案1】:

如果它在浏览器中正确打开,但在使用 Rest 客户端时无法打开,请比较浏览器添加的标头,并确保您也发送了这些标头。有时,例如,如果缺少 content-length,服务器会拒绝为请求提供服务。

您可以使用 fiddler 之类的工具来查看 html 标头的外观。

【讨论】:

  • 是的,它会在浏览器中打开。