Почему не вводится последняя версия конфигурации (appsettings. json)? - PullRequest
0 голосов
/ 10 января 2020

Я пытаюсь редактировать appsettings.json во время выполнения. Я нашел отличное решение, как обновить этот файл:

{ ссылка }

Я сделал все в соответствии с ответом выше:

1) Добавлено MySettings в контейнер DI (MySettings добавляются через AddTransient) services.ConfigureWritable (Configuration.GetSection (nameof (MySettings))));

2) Внедрение в конструктор

    private readonly IWritableOptions<MySettings> _cfg;

    public MyController(IWritableOptions<MySettings> cfg)
    {
        _cfg = cfg;
    }

Затем Я использую его в своем Create действии контроллера.

public ActionResult Create(string value)
    {

           //Some specific code...

            MyCustomObj myObj = new MyCustomObj(value);

            //Update appsettings
            _cfg.Update(opt =>
            {
                opt.MyCollection.Add(myObj);
            });

            //Some specific code...

            return RedirectToAction(nameof(Overview));

    }

Файл конфигурации обновлен (обновленный объект MySettings сериализуется в файл), но после перенаправления на Overview у меня есть та же коллекция без вновь созданного объект (конфигурация без обновленной коллекции вводится в конструктор контроллера). Я должен снова обновить страницу sh, а затем я вижу обновленную конфигурацию (обновлено MySettings вводится).

Я подозревал, что это может быть ошибка интерфейса IOptionsSnapshot , потому что он это сфера обслуживания. Но служба с областью действия должна быть активна только в течение времени существования запроса, а перенаправление - это новый запрос, или я ошибаюсь?

Такая же ситуация возникает, когда я пытаюсь удалить какой-либо объект из моей коллекции. Страница со всеми элементами (включая удаленный) отображается. Все нормально, когда я перефразирую sh страницу.

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