Startup.cs возвращает неправильную среду

Класс Startup содержит

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);

    Console.WriteLine($"{env.EnvironmentName.ToString()}");

    if (env.IsDevelopment())
    {
        // For more details on using the user secret store see 
        // https://go.microsoft.com/fwlink/?LinkID=532709
        builder.AddUserSecrets();
    }

    builder.AddEnvironmentVariables();
    Configuration = builder.Build();
}

но env.EnvironmentName.ToString() возвращает «Производство».

Я уже установил для ASPNETCORE_ENVIRONMENT значение «Разработка» в launchSettings.json.


person datkom    schedule 09.10.2016    source источник
comment
Как вы начинаете проект? ASPNETCORE_ENVIRONMENT в настройках проекта / launchSettings.json применяется только при запуске из Visual Studio через F5/Ctrl+F5. Запуская его через dotnet или любым другим способом, не применяйте его. launchSattings.json — это чистая механика VIsual Studio.   -  person Tseng    schedule 09.10.2016
comment
Есть ли способ установить переменные среды. Я использую код Visual Studio и CLI ядра dotnet для разработки.   -  person datkom    schedule 10.10.2016
comment
Если вы запускаете его из команды, например, используйте команды оболочки вашей среды, чтобы установить переменную среды (CommandLine, Powershell, bash или что-то еще, что использует MacOS)   -  person Tseng    schedule 10.10.2016
comment
уже сделал это «установить ASPNETCORE_ENVIRONMENT = Development», но все равно получил неправильную среду   -  person datkom    schedule 10.10.2016


Ответы (3)


Обычно это происходит, когда у вас также есть среда настройки в web.config.

Например, если у вас есть настройка среды как Production в launchSettings.json-

  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Production"
      }
    },

А в web.config, если у вас другое окружение Staging-

<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false">
  <environmentVariables>
    <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Staging" />
  </environmentVariables>
</aspNetCore>

В этом случае вы получите Staging, когда попытаетесь прочитать env.EnvironmentName в startup.cs.

Посмотрите, поможет ли это.

person Sanket    schedule 09.10.2016
comment
Пытался поместить <environmentVariables> в web.config, но все равно не работает. Я использую код Visual Studio и CLI ядра dotnet для разработки. - person datkom; 10.10.2016
comment
Если вы не используете VS2015, вы можете установить переменную из командной строки, например, set ASPNETCORE_ENVIRONMENT=Development, а затем запустить dotnet команды. - person Sanket; 10.10.2016
comment
уже установил его set ASPNETCORE_ENVIRONMENT=Development. Все еще получаю тот же результат - person datkom; 10.10.2016
comment
Я ЛЮБЛЮ ВАС! Я потратил НАВСЕГДА, пытаясь понять это... Теперь я лысый - person Godrules500; 27.04.2020
comment
Устарело для asp.net core 2+: больше нет web.config - person Maicon Heck; 14.07.2020

Получил эту работу с помощью команды powershell:

$Env:ASPNETCORE_ENVIRONMENT = "Development"

person datkom    schedule 15.10.2016

Это может быть полезно для некоторых.

Я запускал локально опубликованные файлы, которые не запускались через визуальную студию F5. Установка переменной среды через командную строку добавила ее к пользовательским переменным среды, что не сработало.

Что мне нужно было сделать, чтобы заставить его работать, так это добавить ASPNETCORE_ENVIRONMENT в переменные системной среды. Потом после перезагрузки заработало.

Чтобы перейти к переменным среды: щелкните правой кнопкой мыши «Этот компьютер», затем «Свойства». Затем «Дополнительные параметры системы». Затем, наконец, нажмите кнопку «переменные среды». В следующем всплывающем окне добавьте системные переменные.

person ShrapNull    schedule 20.11.2019