мы настраиваем части приложения во время выполнения:
ConfigurationManager.AppSettings["someKey"] = "someValue";
Этот код вызывается при инициализации модуля http, поэтому он очень ранний и работает нормально - почти.Причина в фреймворке, где мы (ребята, предоставляющие фреймворк) хотим избежать того, чтобы пользователи фреймворка (некоторые другие разработчики в нашей компании)
- забыли добавить этот параметр в web.configили
- добавьте неправильные значения в их конкретные web.configs
Теперь, при некоторых обстоятельствах (то есть высоком давлении в памяти) ConfigurationManager явно сбрасывает NameValueCollection
для appSettingsи перезагружает значения из файла, так что ключ / значение, добавленное нами в коде, теряется.
Это происходит иногда после того, как веб-приложение работает нормально в течение нескольких часов.Это очень редко и происходит только тогда, когда веб-приложение, кажется, находится под большой нагрузкой.
Теперь вопрос:
Есть ли способ
- не позволяют диспетчеру конфигурации удалять и перезагружать appSettings (это может включать вызовы
RefreshSection
) или - определять, когда диспетчер конфигурации отбрасывает свой раздел appSettings, чтобы мы могли реагировать и добавить ключснова или
- есть ли другие способы поместить значение в appSettings с помощью кода и сохранить его до следующего перезапуска приложения без фактического изменения файла web.config?
Обновление: определена причина, по которой значения сбрасываются (нагрузка на память)