asp.net - visual - Caché de ConfigurationManager.AppSettings
configurationmanager not working c# (6)
Sabemos que IIS almacena en caché ConfigurationManager.AppSettings para que lea el disco solo una vez hasta que se cambie web.config. Esto se hace con fines de rendimiento.
Alguien en:
http://forums.asp.net/p/1080926/1598469.aspx#1598469
declaró que .NET Framework no hace lo mismo para app.config, pero lee del disco para cada solicitud. Pero me resulta difícil de creer, porque sería más lento. Por favor, dígame que está equivocado o tendré que arreglar cada consola / Windows Forms / Windows Services que escribí.
Actualización Lamento haber malinterpretado lo que dijeron las personas en el foro vinculado anteriormente.
AppSettings está en caché. Puede mejorar el rendimiento almacenando en caché aún más para limitar búsquedas de colecciones de valores de nombres.
Como dice John, solo dedica más tiempo a esto si estás viendo un golpe de rendimiento.
También estoy bastante seguro de que estas aplicaciones mantienen la configuración en la memoria , y para ver cualquier cambio dentro de una configuración, la aplicación debería reiniciarse .
Para leer más sobre los misterios restantes.
Intentalo,
ConfigurationManager.RefreshSection("appSettings")
Solo tenga cuidado con el nombre del archivo ( en la carpeta bin )
Nombre de archivo normal: nombre de aplicación. exe.config
si el modo de depuración: appname. vshost.exe.Config
Lee el archivo de configuración de la aplicación (MyApp.exe.config) una vez al inicio de la aplicación, como se puede verificar fácilmente al cambiar el archivo mientras se ejecuta la aplicación.
El comentario en la publicación del foro al que hizo referencia el OP fue:
Los valores para Web.config se almacenan en el caché / memoria cuando se inicia la aplicación, por lo que la aplicación se reinicia cuando se realizan cambios en el web.config. Tenga en cuenta que esto solo se aplica a Web.config, a cualquier otro archivo .config que pueda usar se accede desde el disco de manera predeterminada
Interpretaría este comentario como que los archivos de configuración que no sean web.config en una aplicación ASP.NET se acceden desde el disco de forma predeterminada. Y de forma similar, se accede a los archivos de configuración que no sean MyApp.exe.config en una aplicación WinForms / Console desde el disco de forma predeterminada.
Este comentario no indica que MyApp.exe.config se lea del disco de forma predeterminada.
No importa si lo hace o no. No solucione un problema de rendimiento si no hay uno.
Una prueba rápida parece mostrar que estas configuraciones solo se cargan al inicio de la aplicación.
//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();
Verás que todas las salidas son las mismas.