Dnxを使用してASP.NET Core-appを実行すると、コマンドラインから環境変数を設定し、次のように実行できました。
set ASPNET_ENV = Production
dnx web
1.0で同じアプローチを使用:
set ASPNETCORE_ENVIRONMENT = Production
dotnet run
動作しません-アプリは環境変数を読み取ることができないようです。
Console.WriteLine(Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"));
nullを返します
私は何が欠けていますか?
問題は=
の周りのスペースです。
これは動作します:
Console.WriteLine(Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT "));
または、スペースを削除します(以下の@Isantipovのコメントを参照)。
set ASPNETCORE_ENVIRONMENT=Production
これは本当に this answer by @ Dmitry へのコメントであるはずです(しかし長すぎるので、別の回答として投稿します):
'ASPNETCORE_ENVIRONMENT '
(末尾スペース付き)を使用したくない場合-'ASPNETCORE_ENVIRONMENT'
(末尾スペースなし)の値に依存するaspnetコアの機能があります。 appsettings.Development.json
対appsettings.Production.json
の解決。 (例: Working with multiple environment docs article を参照してください
また、純粋にaspnetコアパラダイム内にとどまる場合は、Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")
から直接読み取るのではなく、IHostingEnvironment.Environment
( docs を参照)プロパティを使用する必要があります(ただし、fromerはもちろん後者から設定されます)。例えば。 Startup.csで
public class Startup
{
//<...>
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
Console.WriteLine("HostingEnvironmentName: '{0}'", env.EnvironmentName);
//<...>
}
//<...>
}