Загрузите файл appsettings.{envName}.json в ASP.NET Core 2.1.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Загрузите файл appsettings.{envName}.json в ASP.NET Core 2.1.

Сообщение Anonymous »

В предыдущих версиях ASP.NET Core мы могли динамически добавлять файлы appsetting.json с суффиксом среды, например appsettings.Production.json, для производственной среды.

Поскольку структура немного другая, похоже, что конфигурация теперь загружена в класс Program. Но у нас здесь нет введенного ``, поэтому я попробовал это сам, используя переменную среды:

Код: Выделить всё

public class Program {
public static void Main(string[] args) {
CreateWebHostBuilder(args).Build().Run();
}

public static IWebHostBuilder CreateWebHostBuilder(string[] args) {
string envName = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
string envConfigFile = $"appsettings.{envName}.json";

var config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile(envConfigFile, optional: true);

var finalConfig = config.Build();
return WebHost.CreateDefaultBuilder(args)
.UseUrls("http://0.0.0.0:5000")
.UseConfiguration(finalConfig)
.UseStartup();
}
}
Код выполнился, но не отменяет мою конфигурацию appsettings.json. Допустим, у меня есть следующий файл appsettings.json:

Код: Выделить всё

{
"MyConnectionString": "Server=xxx,Database=xxx, ..."
}
Эта строка подключения работает. Теперь я создаю

Код: Выделить всё

appsettings.Development.json

Код: Выделить всё

{
"MyConnectionString": ""
}
и установите ASPNETCORE_ENVIRONMENT=Development. Это определенно должно вызвать исключение. Но приложение запускается правильно с помощью ConnectionString из appsettings.json.

В соответствии с изменениями конфигурации ASP.NET Core 2, метод WebHost.CreateDefaultBuilder сам должен использовать новый подход ConfigureAppConfiguration и загружать конфигурацию, специфичную для среды. по умолчанию. Также в официальной документации говорится, что appsettings.{Environment}.json загружается автоматически. Но это не работает, а загрузка вручную не решает проблему:

Код: Выделить всё

return WebHost.CreateDefaultBuilder(args)
.UseUrls("http://0.0.0.0:5000")
.ConfigureAppConfiguration((builderContext, config) => {
IHostingEnvironment env = builderContext.HostingEnvironment;
config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
})
.UseStartup();
Как переопределить конфигурацию с помощью шаблона «appsettings.{envName}.json»? Мне это понравилось, потому что было удобно переопределять определенные вещи env в ASP.NET Core.

Подробнее здесь: https://stackoverflow.com/questions/526 ... t-core-2-1
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Можем ли мы использовать один файл appsettings.json вместо поддержки нескольких версий appsettings.{environmentname}.jso
    Anonymous » » в форуме C#
    0 Ответы
    38 Просмотры
    Последнее сообщение Anonymous
  • Позволяет ли ASP.NET Core читать ВЕСЬ файл appsettings.json за один вызов одного класса?
    Гость » » в форуме C#
    0 Ответы
    51 Просмотры
    Последнее сообщение Гость
  • Asp.net core 6. Файл конфигурации appsettings.json не найден и не является обязательным.
    Гость » » в форуме C#
    0 Ответы
    41 Просмотры
    Последнее сообщение Гость
  • ASP.NET Core project.dll не может найти файл appsettings.Production.json
    Anonymous » » в форуме C#
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • ASP.NET Core project.dll не может найти файл appsettings.Production.json
    Anonymous » » в форуме C#
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»