【发布时间】: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