Вы не можете переименовать имена переменных среды ASPNETCORE_ENVIRONMENT
или DOTNET_ENVIRONMENT
. Они встроены в построитель хостов по умолчанию, который вы, вероятно, будете использовать при создании ASP. NET Базовых приложений.
Однако вы можете настроить хост с собственными источниками конфигурации. Таким образом, вы можете вводить конфигурации из переменных среды, которые не соответствуют стандартным именам. Например, если вы хотите прочитать имя среды из переменной среды stage
, вы можете изменить CreateHostBuilder
, включив в него вызов ConfigureHostConfiguration
, который изменяет конфигурацию:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureHostConfiguration(c => {
c.AddInMemoryCollection(new Dictionary<string, string>()
{
["Environment"] = Environment.GetEnvironmentVariable("stage"),
});
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
Примечание что если вы вызовете ConfigureHostConfiguration
до ConfigureWebHostDefaults
, то вам нужно будет убедиться, что ваш launchSettings.json
не содержит конфигурации для переменной ASPNETCORE_ENVIRONMENT
, иначе ваша пользовательская переменная будет перезаписана. Вы также можете поменять местами эти два вызова, чтобы переменная окружения имела приоритет над стандартным именем. Конечно, это применимо только в разработке (поскольку в производстве нет launchSettings.json
).
Чтобы ответить на ваш последний вопрос: это хорошая идея? Возможно нет. Если вам не нужно делать это по внешним причинам (например, чтобы соответствовать существующим процессам развертывания, которые вы не контролируете), вам следует придерживаться имен по умолчанию, чтобы убедиться, что все вовлеченные стороны правильно понимают влияние.
И просто чтобы уточнить это: оба DOTNET_ENVIRONMENT
и ASPNETCORE_ENVIRONMENT
хороши в использовании, и последний не исчезнет в ближайшее время.