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? нагляд? чи причину, про яку нам потрібно знати?