我在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地址从另一台电脑调用APIhttp://ExternalIp:8080/
我得到这个错误:
错误请求-无效主机名HTTP错误400。请求主机名为无效
我尝试过的:
- 我在防火墙中为传入连接中的端口8080设置了一条规则
- 我已经用ISS服务器进行了测试,该服务器使Windows server 2019时断时续
- 我在"C:\Users\myUser\source\repos\myProyect.vs\proyectname\config"中为<'创建了一个"applicationhost.config"文件绑定协议=";http";bindingInformation=">:8080:"/>因为我的项目没有applicationhost.config文件
正如@PanagiotisKanavos评论的那样,我不能使用"localhost";在";听众。前缀。添加";用于外部请求。
解决者:
http://*:8080/
并以管理员身份运行Visual Studio。