Кэширование ConfigurationManager.AppSettings
Мы знаем, что IIS кэширует ConfigurationManager.AppSettings, поэтому он читает диск только один раз, пока не изменится web.config. Это делается для достижения целей.
Кто-то на:
http://forums.asp.net/p/1080926/1598469.aspx#1598469
заявил, что .NET Framework не делает то же самое для app.config, но читает с диска для каждого запроса. Но мне трудно поверить, потому что это будет медленнее. Скажите, пожалуйста, что он не прав или мне придется исправить все созданные Консоль /Windows Forms/Windows Services.
Обновление Я сожалею, что неправильно истолковал то, что говорили люди на связанном форуме.
Ответы
Ответ 1
Быстрый тест показывает, что эти настройки загружаются только при запуске приложения.
//edit the config file now.
Console.ReadLine();
Console.WriteLine(ConfigurationManager.AppSettings["ApplicationName"].ToString());
Console.WriteLine("Press enter to redisplay");
//edit the config file again now.
Console.ReadLine();
Console.WriteLine(ConfigurationManager.AppSettings["ApplicationName"].ToString());
Console.ReadLine();
Вы увидите, что все выходы остаются неизменными.
Ответ 2
Он читает файл конфигурации приложения (MyApp.exe.config) один раз при запуске приложения, так как его можно легко проверить, изменив файл во время работы приложения.
Комментарий в сообщении форума, на который ссылается OP:
Значения для Web.config: хранится в кеше/памяти, когда приложение начинает поэтому, почему приложение перезапускается, когда вносятся какие-либо изменения в web.config. Обратите внимание, что это только применяется к Web.config, любому другому Доступны файлы .config с диска по умолчанию
Я бы интерпретировал этот комментарий как означающий, что файлы конфигурации, отличные от web.config в приложении ASP.NET, получают доступ с диска по умолчанию. Аналогично, файлы конфигурации, отличные от MyApp.exe.config в приложении WinForms/Console, доступны с диска по умолчанию.
В этом комментарии не указано, что файл MyApp.exe.config по умолчанию считывается с диска.
Ответ 3
Неважно, если это так или нет. Не исправляйте проблемы с производительностью, если их нет.
Ответ 4
AppSettings кэшируется. Вы можете повысить производительность за счет дальнейшего кэширования, чтобы ограничить поиск по именам и спискам.
Смотрите: шаблон статической конфигурации DotNetPearls
Ответ 5
Как говорит Джон, только потратьте больше времени на это, если вы действительно видите удар производительности.
Также я уверен, что эти приложения содержат конфигурацию в памяти, и для просмотра любых изменений в конфигурации приложение должно быть перезагружено.. p >
Для некоторых дальнейшее чтение о оставшихся тайнах.