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