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

问题描述 投票:0回答:1

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

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

根据 这个这就是我所需要的一切。

我去了发布文件夹,并运行 dotnet DuckGoose.dll,应用程序启动。从这边看来一切都很正常。

然而,当我进入 http://lightsail_provided_ip:5000,服务器拒绝连接。我不知道为什么。

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

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

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

amazon-web-services razor .net-core ubuntu-16.04 amazon-lightsail
1个回答
2
投票

问题是你的项目在环回地址上监听,所以外部设备无法连接到该服务在环回地址上监听。

对于云服务器,有两种方法可以解决这个问题。

  1. 配置你的Nginx设置一个反向代理到你的服务,如果你打算使用Nginx的话,这个服务在环回地址上监听。你的链接有必要的说明来设置它。

  2. 你可以将环回地址改为 "0.0.0.0",这样服务就可以在所有地址上监听。这可以通过进入你的项目目录,打开属性文件夹,然后编辑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比较容易。

© www.soinside.com 2019 - 2024. All rights reserved.