asp.net5 自托管 WebListener 连接超时

asp.net5 selfhosted WebListener connection timeout

我正在使用 asp.net5 web 项目托管在控制台应用程序中。 它在本地主机上工作正常,但是当我尝试从 http://192.168.1.5:5432 等不同的机器访问该网站时,我得到 ERR_CONNECTION_TIMED_OUT。 我尝试了几种方法,比如将本地主机更改为机器名称,但其中 none 有效。

hosting.ini 文件:

server=Microsoft.AspNet.Server.WebListener
server.urls=http://localhost:5432

是否有解决此问题的方法,或者在控制台应用程序中托管仅用于开发目的

因为您已将侦听器绑定到本地主机,所以它将只接受到(和来自)本地主机的连接。 localhost 在这里很特别,因为它(至少对于 Kestrel 而言)总是绑定到 localhost/loopback 接口。 localhost 之外的所有内容都绑定到所有网络接口。

如果您希望所有 IP 都可以访问它并且 host/domain 不可知,则必须使用 http://0.0.0.0:5432(或者 http://*:5432)。如果你这样做 http://www.example.com:5432,那么它将可以从所有 IP 访问,但前提是在浏览器中输入了主机名,所以 http://192.168.1.5:5432 仍然不起作用(现在无法测试最后一个,但是* 通配符 url 应该仍然有效)。

这样您可以 运行 多个 asp.net 核心应用程序在同一台服务器上,但具有不同的 hosts/domains。

您还可以 运行 两个应用程序在同一个域和同一个端口上,如果您将它们绑定到不同的端点。

例如 http://www.example.com/App1http://www.example.com/App2,使用相同的端口和相同的域但不同的端点和两个应用程序。

编辑

windows 用户的附加信息。您可能必须添加一个例外来更改本地安全设置,以允许 dnx 绑定到此 port/host(或 运行 作为管理员,这将是不鼓励的),尤其是在使用主机和低编号时端口(分别为 80 和 443)。

netsh http add iplisten ipaddress=0.0.0.0:80
netsh http add urlacl url=http://+:80/ user=Example\Username

这将允许域 "Example" 中用户 "Username" 的应用程序开始侦听端口 80。