Конфигурация конкретной среды не должна указываться в коде.ASP.NET Core имеет механизм для этого, который позволяет вам менять конфигурацию в зависимости от того, в какой среде вы работаете.
При разработке приложения вы обычно работаете в среде Development
.При развертывании приложения для работы по умолчанию используется среда Production
.Но если у вас есть другие среды, вы можете полностью создать новые имена для них и иметь конкретные конфигурации для них.Все это объясняется в главе Окружения документации
Что позволяет сделать среда - это создать несколько appsettings.json
файлов.Ядро ASP.NET по умолчанию поставляется с двумя файлами: appsettings.json
и appsettings.Development.json
.
Первый должен содержать конфигурацию, не зависящую от среды;вещи, которые относятся ко всем средам.Последний файл содержит конфигурацию, относящуюся к разработке, и, например, настраивает уровень ведения журнала, чтобы вы могли получить больше информации во время разработки.Вы также можете использовать эти файлы, чтобы указать строку подключения по умолчанию в appsettings.json
и перезаписать ее для разработки в appsettings.Development.json
.
Кроме того, файл конфигурации следует очень простому шаблону: appsettings.<Environment>.json
.Поэтому, если вы работаете в среде Production
, файл с именем appsettings.Production.json
будет загружен, если он существует.Этот механизм позволяет настраивать все среды по-разному, не прибегая к обнаружению в вашем коде.
Кроме того, существует также концепция пользовательских секретов во время разработки.Они предназначены для конфигураций, специфичных для разработки, которые применимы только к себе, но не относятся, например, к другим членам вашей команды.Это в основном конфигурация для каждой машины, которая позволяет перезаписывать как appsettings.json
, так и appsettings.Development.json
.Это описано в главе Секреты пользователя .
. Лучше всего избегать использования строк подключения в файлах конфигурации, так как вы хотите, чтобы люди, у которых есть доступ к вашим файлам конфигурации(например, через ваш исходный код) может знать пароли к вашей базе данных.В этом случае вы можете использовать другие механизмы, например переменные среды , которые являются локальными для процесса.
В вашем случае, когда вы просто используете интегрированную защиту, и как таковуюполагаться на учетные данные текущего пользователя, это не так уж много проблем.Единственное, что вы пропускаете - это имя базы данных.- Таким образом, вы определенно можете начать с помещения строк подключения в файлы appsettings.
Так, например, именно так вы бы сконфигурировали контекст вашей базы данных в пределах ConfigureServices
вашего * стартапа:
services.AddDbContext<AppIdentityDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("WebDataBase"));
Ваш appsettings.Development.json
будет выглядеть так:
{
"ConnectionStrings": {
"WebDataBase": "Data Source=DatasourceName;Initial Catalog=DBname;Trusted_Connection=True;Integrated Security=True;"
}
}
А ваш appsettings.Production.json
будет выглядеть так:
{
"ConnectionStrings": {
"WebDataBase": "Data Source=DatasourceName;Initial Catalog=DatabaseName;Trusted_Connection=True;Integrated Security=True;"
}
}