【问题标题】:How do I inject Heroku's PORT value into a dotnet core 6.0 web api?如何将 Heroku 的 PORT 值注入 dotnet core 6.0 web api?
【发布时间】:2022-01-26 20:21:14
【问题描述】:

我不使用 Docker。相反,我正在尝试使用jincod/dotnetcore buildpack。但是,我需要一种方法来告诉 dotnet 使用 Heroku 的端口号环境变量,我只是在这里看不到这样做的好方法。

在我的Program.cs 文件中,我添加了以下内容:

builder.Services.AddHttpsRedirection(options =>
{
    options.HttpsPort = int.TryParse(Environment.GetEnvironmentVariable("PORT"), out var p) ? p : null;
});

实际上有点的工作原理是我能够从 Heroku 获取端口号值,但这只是将我从 myapp.heroku.com 重定向到 myapp.heroku.com:1234 并且仍然无法按预期工作.

我在launchSettings.json 文件中看到profiles 部分有一个applicationUrl,它显示了两个url,一个用于https,一个用于http,两者都指定了端口号。我想如果我可以覆盖这些端口号,这可能会起作用,但我不知道如何将该环境变量注入 Heroku 的 launchSettings.json 文件中。有人知道这样做的好方法吗?或者我什至在正确的轨道上?

【问题讨论】:

    标签: heroku .net-core environment-variables


    【解决方案1】:

    我相信如果您在 https 重定向中间件之前添加以下内容,您将不需要将任何配置传递给UseHttpsRedirection

    app.UseForwardedHeaders(new ForwardedHeadersOptions
                {
                    ForwardedHeaders = ForwardedHeaders.XForwardedProto
                });
    

    您可以获取端口变量并绑定它。如果您使用的是 dotnet 6 最小 API,则可以这样做。

    
    var port = Environment.GetEnvironmentVariable("PORT") ?? "3100";
    app.Run("http://0.0.0.0:" + port);
    
    

    您需要将"https_port": 443 添加到您的appsettings.json 或在heroku 中将环境变量ASPNETCORE_HTTPS_PORT 设置为443。您可以在此处查看此操作。

    https://github.com/TerribleDev/dotnet-mvc-test

    https://tp-aspnet-tst.herokuapp.com/

    如果您使用的是早于 6 的版本,则可以执行以下操作...

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) {
                var builder = WebHost.CreateDefaultBuilder(args)
                    .UseStartup<Startup>()
                    .ConfigureKestrel(a =>
                    {
                        a.AddServerHeader = false;
                    });
                var port = Environment.GetEnvironmentVariable("PORT");
                if(!String.IsNullOrWhiteSpace(port)) {
                    builder.UseUrls("http://*:" + port);
                }
                return builder;
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-19
      • 1970-01-01
      • 2018-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-15
      • 2017-03-31
      相关资源
      最近更新 更多