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? надзор? или причину, которую мы должны знать?