Подтвердить что ты не робот

Переменные среды чтения .NET.NET

Запуск моего основного приложения ASP.NET с помощью dnx Мне удалось установить переменные среды из командной строки, а затем запустить его следующим образом:

set ASPNET_ENV = Production
dnx web

Используя тот же подход в 1.0:

set ASPNETCORE_ENVIRONMENT = Production
dotnet run

не работает - приложение, похоже, не может читать переменные среды.

Console.WriteLine(Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"));

возвращает null

Что мне не хватает?

4b9b3361

Ответ 1

Ваша проблема заключается в пробелах вокруг =.

Это будет работать:

Console.WriteLine(Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT "));

Или удалите пробелы:

set ASPNETCORE_ENVIRONMENT=Production

Ответ 2

Это должен быть комментарий этого @Dmitry (но слишком долго, следовательно, я отправьте его как отдельный ответ):

Вы не хотели бы использовать 'ASPNETCORE_ENVIRONMENT ' (с конечным пространством) - в ядре aspnet есть функции, которые зависят от значения 'ASPNETCORE_ENVIRONMENT' (без конечного пробела) - например. разрешая appsettings.Development.json vs appsettings.Production.json. (например, см. Работа с несколькими документами документации docs

Я также думаю, что если вы хотите остаться чисто внутри парадигмы ядра aspnet, вы бы хотели использовать IHostingEnvironment.Environment (см. docs) вместо прямого чтения из Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") (хотя, конечно же, из последних установлено значение 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);
        //<...>
    }

    //<...>
}