【问题标题】:Unable to set Enviroment Variable when publishing dotnet core 2.0 project发布 dotnet core 2.0 项目时无法设置环境变量
【发布时间】:2018-01-17 17:42:37
【问题描述】:

我在使用正确的环境设置运行我的 dotnet core 2.0 API(在 Ubuntu 16.04 上使用 .NET Core CLI)时遇到问题。

我在“~/.bash_profile”中添加了以下内容:

ASPNETCORE_ENVIRONMENT=staging

当我运行项目(使用 dotnet run)时,它似乎工作正常,它检测到它应该处于暂存状态。 但是,当我使用“dotnet publish”编译时 并尝试使用:

nohup dotnet API.dll --urls "http://*:1337" &> /var/log/dotnetlogs

它似乎没有检测到环境变量,并且总是默认使用“生产”环境。

Startup.cs:

public Startup(IHostingEnvironment env)
{
    var builder = new ConfigurationBuilder()
        .SetBasePath(env.ContentRootPath)
        .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
        .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
        .AddEnvironmentVariables();
    Configuration = builder.Build();
}

程序.cs

public static void Main(string[] args)
{

    var config = new ConfigurationBuilder()
        .AddCommandLine(args)
        .Build();
    var host = new WebHostBuilder()
        .UseKestrel()
        .UseContentRoot(Directory.GetCurrentDirectory())
        .UseConfiguration(config)
        .UseStartup<Startup>()
        .Build();

    host.Run();
}

public static IWebHost BuildWebHost(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .UseStartup<Startup>()
        .Build();

知道我怎样才能让它工作吗?

【问题讨论】:

  • 确保您的环境变量没有被launchSettings.json覆盖
  • 您好,感谢您的建议。但是我相信 launchSettings.json 是由 Visual Studio 生成的,并且 .NET Core CLI 在构建/发布时不会创建此文件。事实上,我在 ubuntu 机器上的任何地方都找不到这个文件。

标签: c# .net-core ubuntu-16.04 asp.net-core-2.0


【解决方案1】:

您是否缺少导出The docs 还说 Linux 区分大小写,因此您可能希望使用 Staging

export ASPNETCORE_ENVIRONMENT=Staging

【讨论】:

  • 嗨,谢谢。出口没有丢失(我只在这里排除了它)。关于区分大小写,我使用“Staging”而不是“staging”进行了测试,但无济于事。此外,它默认为“生产”,而不是“暂存”,并且在我不发布项目时工作正常。
猜你喜欢
  • 2018-03-08
  • 2021-02-15
  • 1970-01-01
  • 1970-01-01
  • 2022-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-20
相关资源
最近更新 更多