【问题标题】:Can't consume self hosted (using console) asp .net 5 web api over LAN无法通过 LAN 使用自托管(使用控制台)asp .net 5 web api
【发布时间】:2016-03-25 13:33:38
【问题描述】:

在将其标记为重复之前,请通读。

我正在使用 Visual Studio 2015 中的简单 Web 托管选项,它通过 localhost:5000 端口托管默认模板 Web api。

请注意,我没有使用 IIS express,有很多关于 IIS 托管的问题。

我可以简单地使用http://localhost:5000/api/values 来使用它们。但是,当我尝试从 LAN 上的另一个系统使用此 api 时,使用适当的 IP 而不是 localhost,它根本无法连接并显示连接到 url 的错误。

您可以尝试轻松重现:

  1. 使用 Visual Studio 2015 创建 ASP .NET 5 Web api。
  2. 在运行解决方案时选择“Web”选项,而不考虑“IIS Express”。这将使 ASP .NET Web api 在端口 5000 上使用控制台。
  3. 现在我们可以通过点击:http://localhost:5000/api/values 来使用 web api
  4. 但是,如果我尝试通过 LAN 从另一个系统执行相同操作(将 localhost 更改为适当的 IP),我无法连接。
  5. 另外,如果我尝试通过 LAN 从另一个系统 ping 我的系统,我会得到适当的响应。

任何帮助将不胜感激。

【问题讨论】:

  • 似乎拒绝所有访问,但来自localhost。当您正确发布应用程序然后启动它时会发生什么?我敢打赌,它在受雇时不会这样。必须有一些配置开关以使其按照您想要的方式运行(即不要拒绝除 localhost 之外的所有人的访问)
  • 如果我使用 IIS 托管它,然后尝试通过 LAN 从远程计算机访问它,我仍然无法让它工作。在这种情况下,我收到消息“HTTP 错误 400。请求主机名无效”。
  • 可能是因为该 HTTP 请求中 Host: ... 字段的内容错误。尝试将其设置为localhost<network ip> 可能吗?总而言之,如果您使用/发布您的网络应用程序,那么这些无法访问的问题无论如何都会解决。
  • 我正在使用网络 IP 地址,我可以 ping 该 IP。但是无法访问web api。

标签: c# .net iis asp.net-web-api localhost


【解决方案1】:

编辑project.json文件,找到“commands”部分,编辑“web”键的值如下:

"web": "Microsoft.AspNet.Server.Kestrel --server.urls=http://*:5000"

这将导致 Kestrel 监听来自所有接口的所有地址。您还应该检查防火墙设置; 5000被屏蔽了吗?

【讨论】:

  • 哇。那行得通。但这是完美的解决方案吗?
  • 看起来这就是解决方案。我将其标记为已回答。也请告诉我一些参考资料以了解这一点吗?
  • @DotnetRocks - 看起来不错的概述可以在这里找到:docs.asp.net/en/latest/fundamentals/…
  • 谢谢 :-) 。我需要赶上许多新事物。
猜你喜欢
  • 1970-01-01
  • 2016-04-07
  • 1970-01-01
  • 2017-01-26
  • 2016-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-24
相关资源
最近更新 更多