【问题标题】:Dot net core 5 publish on RHEL 8点网核心 5 在 RHEL 8 上发布
【发布时间】:2022-01-13 07:24:44
【问题描述】:

我正在尝试在 AWS 的 Red hat linux 上发布一个 dot net core 5 web api,并使用公共 IP 地址通过互联网访问它。我现在想在不使用任何代理的情况下测试这个应用程序,即直接使用 linux 服务器中内置的 Kestrel 服务器

我已采取的步骤

  1. 我已经用 RHEL 8 配置了 AWS EC2 实例,并在服务器上安装了 Dot net core 5。
  2. 在 Visual Studio 2019(Windows 10 环境)中,创建了一个示例 Web api,即默认提供的天气应用程序。在本地运行并确认它可以工作
  3. 使用 configuration=release 选项将应用程序发布到 Visual Studio 的本地文件夹中
  4. 使用 winscp ,将本地文件夹内容复制到服务器上的 /var/www/html 文件夹中
  5. 从 ec2 实例运行命令 dotnet webapp2.dll 并获得以下输出
[ec2-user@ip-172-31-93-219 html]$ dotnet webapp2.dll
info: Microsoft.Hosting.Lifetime[0]
      Now listening on: http://localhost:5000
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Production
info: Microsoft.Hosting.Lifetime[0]
      Content root path: /var/www/html

  1. 在浏览器中,使用公共 ip_address 和端口 5000 访问 Web 应用程序。但它没有响应

http://54.205.158.241:5000/

【问题讨论】:

  • 附加信息:我从服务器 dotnet webapp2.dll --urls "localhost:5000" 运行了以下命令
  • 另外,实现了在ec2实例的安全组中只开放了22和80端口。不知道如何打开 5000 端口

标签: .net-core


【解决方案1】:

这里有两个问题。

  1. .NET 仅在 localhost 上侦听。这意味着您无法从机器外部(或 EC2 实例,在这种情况下)连接到它。你需要让它在0.0.0.0上收听

  2. 它只侦听端口 5000,而正如您所说,您想使用端口 80 连接到它。

您可以通过设置ASPNETCORE_URLS 环境变量同时修复这两个问题:

例如,你可以这样做:

export ASPNETCORE_URLS="*:80"

更多详情请见https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel/endpoints?view=aspnetcore-6.0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-06
    • 2021-11-13
    • 1970-01-01
    • 2017-03-22
    • 1970-01-01
    • 2017-07-22
    • 1970-01-01
    相关资源
    最近更新 更多