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

时间:2020-05-02 15:11:23

标签: amazon-web-services razor .net-core ubuntu-16.04 amazon-lightsail

我是令人难以置信的.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 个答案:

答案 0 :(得分:2)

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

有两种方法可以为云服务器解决此问题:

  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",

TO

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

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

来连接到您的网站

侧面说明:通常,建议使用Apache或Nginx处理面向公众的连接,并反向代理到正在侦听回送地址的Dotnet Kestrel服务器。 Kestrel仍然是一个进行中的Web服务器,而Nginx和Apache是​​经过战斗测试的服务器,通常为这些服务器配置HTTPS更为容易。