TL; DR
Установите переменную среды, вызываемую ASPNETCORE_ENVIRONMENT
с именем среды (например Production
). Затем сделайте одно из двух:
- Вводят
IHostingEnvironment
в Startup.cs
, а затем использовать что ( env
здесь) , чтобы проверить: env.IsEnvironment("Production")
. Не проверяйте с помощью env.EnvironmentName == "Production"
!
- Используйте либо отдельные
Startup
классы, либо отдельные Configure
/ ConfigureServices
функции. Если класс или функции соответствуют этим форматам, они будут использоваться вместо стандартных параметров в этой среде.
Startup{EnvironmentName}()
(весь класс) || пример:StartupProduction()
Configure{EnvironmentName}()
|| пример:ConfigureProduction()
Configure{EnvironmentName}Services()
|| пример:ConfigureProductionServices()
Полное объяснение
Документы .NET Core описывают, как этого добиться . Используйте переменную окружения, ASPNETCORE_ENVIRONMENT
которая называется желаемой средой, тогда у вас есть два варианта.
Проверьте название среды
Из документов :
IHostingEnvironment
Служба предоставляет базовую абстракцию для работы со средами. Этот сервис предоставляется хостингом ASP.NET и может быть внедрен в логику запуска через Dependency Injection. Шаблон веб-сайта ASP.NET Core в Visual Studio использует этот подход для загрузки специфичных для среды файлов конфигурации (если они есть) и для настройки параметров обработки ошибок приложения. В обоих случаях такое поведение достигается путем обращения к указанной в данный момент среде путем вызова EnvironmentName
или IsEnvironment
экземпляра, IHostingEnvironment
переданного в соответствующий метод.
ПРИМЕЧАНИЕ: Проверка фактического значения env.EnvironmentName
является не рекомендуется!
Если вам необходимо проверить, работает ли приложение в определенной среде, используйте env.IsEnvironment("environmentname")
его, поскольку оно будет правильно игнорировать регистр (вместо проверки, env.EnvironmentName == "Development"
например, если ).
Используйте отдельные классы
Из документов :
Когда запускается приложение ASP.NET Core, этот Startup
класс используется для начальной загрузки приложения, загрузки его параметров конфигурации и т. Д. ( Подробнее о запуске ASP.NET ). Однако, если существует класс с именем Startup{EnvironmentName}
(например StartupDevelopment
), и ASPNETCORE_ENVIRONMENT
переменная окружения соответствует этому имени, тогда используется этот Startup
класс. Таким образом, вы можете настроить Startup
для разработки, но есть отдельная StartupProduction
, которая будет использоваться при запуске приложения в производстве. Или наоборот.
Помимо использования совершенно отдельного Startup
класса, основанного на текущей среде, вы также можете внести коррективы в настройку приложения в Startup
классе. Configure()
И ConfigureServices()
методы поддержки экологически конкретные версии , аналогичные Startup
самого класса, вида Configure{EnvironmentName}()
и Configure{EnvironmentName}Services()
. Если вы определите метод, ConfigureDevelopment()
он будет вызываться вместо того, Configure()
когда среда настроена на разработку. Точно так же ConfigureDevelopmentServices()
будет вызван, а не ConfigureServices()
в той же среде.
IHostingEnvironment
просто ввести в ConfigureServices? надзор? или причину, которую мы должны знать?