【问题标题】:WebClient can't download string from localhostWebClient 无法从 localhost 下载字符串
【发布时间】:2014-11-11 13:24:33
【问题描述】:

我想使用 WebClient.DownloadString 方法从https://localhost:3000/ 下载内容,但此调用以SocketException: No connection could be made because the target machine actively refused it 结束,尽管该地址可通过浏览器访问。

我发现,当我替换为127.0.0.1(所以地址是https://127.0.0.1:3000)时,该请求是成功的。

如何修复它以便我可以使用 localhost 地址(由于 SSL 证书,它需要是 localhost)?

【问题讨论】:

  • “主动拒绝”表示当您尝试连接时主机发送了重置而不是确认。因此,这在您的代码中不是问题。有防火墙阻止了连接,或者托管服务的进程没有在该端口上侦听,这可能是因为它根本没有运行,或者因为它正在侦听不同的端口。
  • 感谢您的回答。正如我在问题中所写,服务正在运行并且可以通过 127.0.0.1 上的 Web 浏览器和本地主机地址访问,但是 WebClient 本地主机地址有问题,127.0.0.1 很好,所以我认为,防火墙在这里不是问题: )
  • 您确定 localhost 在您的机器上解析为 127.0.0.1(而不是 ::1)吗?你能telnet到localhost的3000端口吗?
  • 要么监听 ::1,要么在你的 hosts 文件中将 localhost 定义为仅 127.0.0.1,这样它就不会尝试将 localhost 解释为 ::1。

标签: c# ssl webclient self-signed


【解决方案1】:

WebClient 正在将 localhost 地址转换为 IPv6 地址 ::1,而我没有意识到这一点。所以我在主机文件::1 localhost 中添加了新行,并将服务器监听地址更改为::1

【讨论】:

    猜你喜欢
    • 2014-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-10
    • 2020-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多