Подстановка переменных в файлах конфигурации json для ASP.NET Core? - PullRequest
0 голосов
/ 10 мая 2019

Я хочу использовать конфигурацию JSON для моего проекта ASP.NET Core, как описано здесь: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-2.2

Моя конфигурация называется так:

config
    .SetBasePath(env.ContentRootPath)
    .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
    .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: false, reloadOnChange: true)
    .AddJsonFile($"appsettings.{commandConfig["Site"]}.json", optional: true, reloadOnChange: true)
    .AddEnvironmentVariables();

В каждом appsettings.<site>.json Я мог бы выразиться так:

{
    "Site": "siteName1"
}

Но это кажется пустой тратой.Я хочу поместить это в appsettings.json:

{
    "Site": "$(Site)"
}

и заменить подстановку переменных $(Site) соответствующим образом.

Возможно ли что-либо подобное?

1 Ответ

1 голос
/ 10 мая 2019

Я не уверен, если это возможно.

Я бы предложил использовать переменную окружения:

var mySiteVariable = Environment.GetEnvironmentVariable("MySiteVariable");

config
    .SetBasePath(env.ContentRootPath)
    .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
    .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: false, reloadOnChange: true)
    .AddJsonFile($"appsettings.{mySiteVariable}.json", optional: true, reloadOnChange: true)
    .AddEnvironmentVariables();

ОБНОВЛЕНИЕ:

Если вы не хотите использовать другой файл json, вы можете использовать AddInMemoryCollection.Конфиги, добавленные позже в цепочке, будут перезаписывать переменные из конфигов ранее в цепочке.

config.SetBasePath(env.ContentRootPath)
    .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
    .AddInMemoryCollection(new Dictionary<string, string>()
    {
        {"MyConfigVariable", "overwrite with this value"}
    });

Не существует встроенного способа сделать то, что вы хотите.Вы всегда можете прочитать и проанализировать файл json самостоятельно, если действительно хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...