Развернуть разные строки подключения для каждой среды
Я пытаюсь развернуть проект api core 2.0 api на IIS с Mac.
То, что я хотел бы сделать, это настроить различные файлы appsettings.json для моей среды разработки, промежуточной и производственной сред, а затем вызвать другую среду с помощью dotnet -build как часть моих сценариев развертывания.
Я посмотрел на https://docs.microsoft.com/en-us/aspnet/core/fundamentals/environments который предназначен для более старой версии ядра.net, и я не могу понять, что мне нужно делать, Вместо того, чтобы устанавливать среду для ОС, я хотел бы установить ее программно (поскольку мои промежуточные и производственные среды предназначены для одного и того же сервера)
У меня есть файл appsettings.Development.json, который используется при запуске моего приложения, но у меня не получается загрузить файл appsettings.Production.json при простой установке переменной среды как части команды build.
bash$ ASPNETCORE_ENVIRONMENT=Production dotnet run
Using launch settings from /Properties/launchSettings.json...
Hosting environment: Development
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.
В конечном итоге я пытаюсь развернуть конкретную строку подключения в зависимости от среды, для которой я создаю. Есть лучший способ сделать это?
Обновить
Помог ответ @ Криса ниже, кроме того, я нашел следующее:
Для пула приложений IIS Если вам необходимо установить переменные среды для отдельных приложений, работающих в изолированных пулах приложений (поддерживается в IIS 10.0+), см. Раздел "Команда AppCmd.exe" раздела "Переменные среды" в справочной документации IIS.
Который позволяет мне настроить различные среды для пула приложений
1 ответ
Документация не для более старой версии ASP.NET Core. Все там еще применимо, и все это выложено, поэтому я не уверен, откуда именно возникла путаница.
В простейшей форме вы просто создаете один или несколько appsettings.{environment}.json
файлы. По умолчанию, appsettings.json
сначала загружается, а затем, если он существует, appsettings.{environment}.json
загружается файл, соответствующий текущей среде. Это позволяет вам переопределить настройки из основного appsettings.json
файл, специально для окружающей среды. Тем не менее, лучшим подходом является размещение только глобальных параметров, которые не зависят от среды, в appsettings.json
а затем оставьте все свои настройки среды для файлов среды.
В любом случае, при развертывании приложения копируются все файлы настроек. Основные проекты ASP.NET не публикуются в зависимости от конкретной конфигурации, как это было в старых проектах ASP.NET. Это означает, что одни и те же опубликованные файлы могут быть развернуты в нескольких различных средах без повторной публикации.
Среда для использования во время выполнения определяется значением ASPNETCORE_ENVIRONMENT
переменная окружения. Просто установите на сервере то, что должно быть, и все готово.
Если вы работаете за IIS, вам нужно сделать еще один шаг. По умолчанию пул приложений не загружается в переменные среды. Это можно изменить, отредактировав расширенные свойства пула приложений в IIS и изменив параметр "Загрузить профиль пользователя" на true
,