45 votes

Rechargement de la configuration sans redémarrer l'application à l'aide de ConfigurationManager.RefreshSection

Quelqu'un a eu ce travail dans une application web?

Peu importe ce que je fais, il semble que ma section appSettings (redirigé depuis web.config à l'aide de appSettings fichier=".\Site\Site.config") n'est pas rechargé.

Suis-je condamnée à le cas d'avoir à juste redémarrer l'application? J'espérais que cette méthode m'a conduit à un plus performant solution.

Mise à jour:

Par "rechargement", je veux dire rafraîchissante ConfigurationManager.AppSettings sans avoir à redémarrer complètement mon ASP.NET application et d'avoir à subir l'habitude de démarrage temps de latence.

57voto

G-Wiz Points 4800

Assurez-vous que vous transmettez la bonne valeur sensible à la casse à RefreshSection, c.-à-d.

 ConfigurationManager.RefreshSection("appSettings");
 

5voto

Pour une raison quelconque, ConfigurationManager.RefreshSection("appSettings") ne fonctionnait pas pour moi. Le rechargement de Web.Config dans un objet Configuration semble fonctionner correctement. Le code suivant suppose que le fichier Web.Config est un répertoire sous le dossier d'exécution (bin).

 ExeConfigurationFileMap configMap = new ExeConfigurationFileMap();
Uri uriAssemblyFolder = new Uri(System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase));
string appPath = uriAssemblyFolder.LocalPath;
configMap.ExeConfigFilename = appPath + @"\..\" + "Web.config";
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None); 
 

Et est utilisé comme:

 string webConfigVariable = config.AppSettings.Settings["webConfigVariable"].Value;
 

3voto

Martin Meixger Points 914

Comme alternative, vous pouvez écrire votre propre ConfigSection et définir restartOnExternalChanges="false" .

Ensuite, lors de la lecture de la section avec ConfigurationManager.GetSection("yourSection") les paramètres seront actualisés automatiquement sans redémarrage de l'application .

Et vous pouvez implémenter vos paramètres fortement saisis ou en tant que NameValueCollection.

0voto

sebagomez Points 3305

Vous devez enregistrer la date avant d'appeler RefreshSection et votre application ASP.Net a besoin d'autorisations d'écriture sur le fichier web.config pour ce faire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X