Переопределить массив в настройках приложения-службы Azure. - PullRequest
0 голосов
/ 07 мая 2018

В моем приложении .NET Core я добавил массив в appsettings.json, который выглядит следующим образом:

{
  "SettingsA": {
    "PropA": [
        "ChildObjectA": {
          ...
        },
        "ChildObjectB": {
          ...
        }
    ]
  }
}

Если я хочу переопределить это значение в настройках приложения в службе приложений Azure, чтобы оно имело пустой массив:

{
  "SettingsA": {
    "PropA": []
  }
}

Есть ли способ сделать это?

Я пытался поставить

SettingsA:PropsA  ->  []

В настройках приложения, но оно не переопределяет значение appsettings.json

Ответы [ 3 ]

0 голосов
/ 07 мая 2018

Вы можете использовать свойство AddEnvironmentVariables для достижения переопределения настроек приложений на Azure для локальных настроек.

Сначала настройте параметр на портале: enter image description here

Примечание : значение здесь равно нулю.

Чтобы переопределить вложенные ключи в разделе «Настройки приложения», мы можем определить переменную, используя полный путь SettingsA:PropA в качестве имени или используя двойное подчеркивание SettingsA__PropA.Вы можете сослаться на эту статью .

На локальном компьютере вы можете настроить, как показано ниже: В Startup.cs:

public Startup(IHostingEnvironment env)
        {
            var builder = new ConfigurationBuilder()
                .SetBasePath(env.ContentRootPath)
                .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
                .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
                .AddEnvironmentVariables();
            configuration = builder.Build();
        }
        public IConfiguration configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();
            services.AddOptions();
            services.Configure<SettingsOptions>(configuration.GetSection("SettingsA"));

        }

В appsettings.json:

{"SettingsA": {
    "PropA": ["a","b"]
    }
}

В HomeController:

private readonly IOptions<SettingsOptions> options;
        public HomeController(IOptions<SettingsOptions> options)
        {
            this.options = options;
        }

        public IActionResult Index()
        {
            var value = options.Value;
            ViewBag.Index = value.PropA+"success";
            return View();
        }

В SettingsOption:

public class SettingsOptions
    {
        public string SettingsA { get; set; }
        public string PropA { get; set; }
    }

После публикации проекта в Azure он переопределит значение PropA.Для получения более подробной информации о том, как читать appsetting из ядра asp.net, пожалуйста, следуйте этому case .

0 голосов
/ 26 июня 2018

Ответ здесь https://www.ryansouthgate.com/2016/03/23/iconfiguration-in-netcore/ заключается в том, что вы можете переопределить элементы в массиве или добавить дополнительные элементы, но он говорит, что вы не можете переопределить весь массив, что кажется странным.

Синтаксис для переопределения использует нулевой доступ, такой как SettingsA: PropA: 0: Что-то, и я попробовал это в Службах приложений и могу подтвердить, что он работает.

0 голосов
/ 07 мая 2018

Насколько я знаю, настройки в Настройки приложения вводятся в ваш appsettings.json во время выполнения , переопределяя существующие настройки. Он не изменит файл appsettings.json, поскольку графический интерфейс Azure (соединения, настройки приложения) внутренне использует переменные среды.

Вот аналогичный пост для вас. Вы можете изменить настройки во время выпуска через VSTS. Вот ссылки на Учебное пособие Colin's ALM Corner по сборке и выпуску и учебное пособие . Для более подробной информации, вы можете обратиться к ответу психо в этом посте.

Если необходимо, чтобы значение appsettings.json было перезаписано во время действия по выпуску VSTS (до того, как оно будет опубликовано в Azure), можно использовать инструменты Colin для сборки и выпуска ALM Corner.

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