为什么我的 .NET 应用程序不监听 5000 端口?

Why isn't my .NET app listening to 5000 port?

我是非常新的 .NET 应用程序,所以这可能很容易修复。我只是冒险进入这个世界,因为我真的很想尝试 Blazor。

我在 AWS Lightsail 上有一个 Ubuntu 服务器,我正在尝试进行设置,以便开始实际编码。我安装了 .NET Core 3.1(和 .NET Runtime 3.1),在 /home 中创建了一个名为 DuckGoose 和 运行 dotnet new blazorserver 的目录。最后,我运行dotnet publish --configuration Release.

根据this,这就是我所需要的。

我转到发布文件夹和 运行 dotnet DuckGoose.dll,应用程序启动了。从这边看一切正常。

但是,当我转到http://lightsail_provided_ip:5000时,服务器拒绝连接。我不知道为什么。

预先感谢您的帮助 - 我在一个新世界,我完全迷路了。

(我在 Lightsail 上有一个防火墙规则,允许使用 TCP 到端口 5000-5001 的入站流量)

注意:在我做这一切之前我也有 nginx 运行,但我把它杀了,问题仍然存在。

问题是您的项目正在侦听环回地址,因此外部设备无法连接到侦听环回地址的服务。

云服务器有两种解决方法:

  1. 如果您打算使用 Nginx,请配置您的 Nginx 为您的服务设置反向代理,该服务正在侦听环回地址。 Your link have the necessary instructions for you to set it up.

  2. 您可以将环回地址更改为“0.0.0.0”,这将使服务侦听所有地址。这可以通过转到您的项目目录,打开 Properties 文件夹,然后编辑 launchSettings.json 文件并更改以下行来完成:

"applicationUrl": "https://localhost:5001;http://localhost:5000",

"applicationUrl": "https://0.0.0.0:5001;http://0.0.0.0:5000",

然后您就可以通过转到 http://lightsail_provided_ip:5000

连接到您的网站

旁注:通常,建议使用 Apache 或 Nginx 来处理 public 面向连接和反向代理到侦听环回地址的 Dotnet Kestrel 服务器。 Kestrel 仍在开发中,而 Nginx 和 Apache 是久经考验的服务器,而且通常更容易为这些服务器配置 HTTPS。