【问题标题】:Call HttpListener from external IP从外部 IP 调用 HttpListener
【发布时间】:2021-09-18 19:31:45
【问题描述】:

我有一个非常简单的 C# API 用于测试目的。 API 是在 Windows 窗体项目中创建的

listener = new HttpListener();               
listener.Prefixes.Add(url);
listener.Start();
LogUtils.appendInfo("Listening for connections on: " + url);
//Handle requests
Task listenTask = HandleIncomingConnections();
listenTask.GetAwaiter().GetResult();

如果我调用 http://localhost:8080/ 我会从 API 获得响应。

问题是,如果我使用外部 IP 地址 http://ExternalIp:8080/ 从另一台 PC 调用 API

我收到此错误:

错误请求 - 无效主机名 HTTP 错误 400。请求主机名是 无效

我尝试过的:

  • 我在防火墙中为传入连接中的端口 8080 设置了一条规则。
  • 我已经使用 ISS 服务器进行了测试,该服务器可以关闭和打开 Windows Server 2019。
  • 我在 'C:\Users\myUser\source\repos\myProyect.vs\proyectname\config' 中为 创建了一个 'applicationhost.config' 文件: 8080:" /> 因为我的项目没有 applicationhost.config 文件。

【问题讨论】:

  • 一个 HttpListener listens only for the URL prefixes 传入 listener.Prefixes.Add(url);。这就是Invalid Hostname 的意思。您不能将单个 url 用于多个 IP 和主机名。

标签: c# visual-studio-2019 httplistener windows-server-2019


【解决方案1】:

正如@PanagiotisKanavos 评论的那样,我不能在“listener.Prefixes.Add”中使用“localhost”来处理外部请求。

解决者:

http://*:8080/

并以管理员身份运行 Visual Studio。

【讨论】:

  • 嗨,@user2983041。这个解决方案能解决您的问题吗?如果解决了,您可以单击“✔”接受它作为答案。有助于社区成员解决类似问题。
猜你喜欢
  • 2018-03-03
  • 1970-01-01
  • 1970-01-01
  • 2012-05-10
  • 2016-05-13
  • 2017-02-21
  • 2019-03-30
  • 2020-08-03
  • 1970-01-01
相关资源
最近更新 更多