.net rafraîchissement de l'app.config
Comment puis-je recharger dynamiquement l'application.config dans un .net application Windows? J'ai besoin de la désactivation de la journalisation de façon dynamique et pas seulement fondée sur la valeur au démarrage de l'application.
ConfigurationManager.RefreshSection("appSettings") ne fonctionne pas et j'ai aussi essayé d'ouvrir explicitement le fichier de configuration à l'aide de OpenExeConfiguration mais j'ai toujours de la valeur mise en cache au démarrage de l'application et non pas de la valeur.
J'ai accepté la réponse de la création d'une section de configuration personnalisée. Comme une note de côté et stupide erreur - si vous êtes en cours d'exécution à partir de l'IDE il n'y a aucun point dans la mise à jour de l'application.le fichier de configuration et attendent à des changements. Vous devez modifier la .exe.fichier de config dans le dossier bin\debug. Doh!
- À l'aide de .NET 4.0 et VS2013update4 ceci fonctionne bien pour moi. c'est à dire que je suis juste à l'appel de ConfigurationManager.RefreshSection("appSettings") après avoir modifié l'application.fichier de configuration sur le disque et il correctement recharge les réglages.
- Petit détail manquant: après le ConfigurationManager.RefreshSection("appSettings") chose que vous devez recharger la configuration = ConfigurationManager.OpenExeConfiguration(Application.ExecutablePath)
Vous devez vous connecter pour publier un commentaire.
Vous pouvez actualiser votre propre section la manière dont vous le dites:
Il suffit de déplacer un enregistrement de type " vrai/faux dans un article et vous serez amende.
Si vous utilisez log4Net, vous pouvez faire ce que vous avez demandé:
Bien qu'il est possible d'ajouter votre log4net les paramètres de configuration de votre projet
app.config
ouweb.config
fichier, il est préférable de les placer dans un fichier de configuration séparé. Outre l'avantage évident de la maintenabilité, il a l'avantage supplémentaire que log4net pouvez placer unFileSystemWatcher
objet sur votre fichier de configuration à surveiller lors de son changement et de mettre à jour ses paramètres de façon dynamique.Pour utiliser un autre fichier de configuration, ajouter un fichier nommé Log4Net.la configuration de votre projet et ajouter l'attribut suivant à votre AssemblyInfo.cs fichier:
Remarque: pour les applications web, ce qui suppose
Log4Net.config
réside dans la racine web. Assurer lalog4net.config
fichier est marqué comme “Copie De Sortie” -> “Copy” dans les Propriétés.Suivant est le hack qui vous pouvez mettre cela fera config pour lire à partir du disque.
Vous avez juste besoin d'enregistrer le fichier de configuration en Mode Modifié, puis actualisez cette en feront la demande à lire le fichier une à partir du disque.
Juste une remarque, en WinForms, vous pouvez faire des changements dans le programme de votre application.config avant que votre demande de charges (avant
Application.Start(new Form1())
), aussi longtemps que vous utilisezSystem.Xml
au lieu deSystem.Configuration.ConfigurationManager
J'ai écrit cette œuvre pour modifier le niveau de journalisation à l'exécution et à la persistance de la nouvelle treshold retour à l'app.config (en fait la Demande.exe.config).
L'interface:
La mise en œuvre:
La classe helper Log4NetUtils:
Le code XAML:
Je ne pense pas qu'il y a moyen de le faire, sauf si vous écrivez votre propre fichier de config du lecteur à l'aide de XML. Pourquoi ne pas simplement activer l'ouverture de session ou au début de votre application basée sur le fichier de configuration de paramètre, et puis il suffit de l'activer ou le désactiver dynamiquement pendant l'exécution du programme?
Je pense que j'ai lu dans le log4net documentation que ce n'est pas possible.
Essayer d'avoir l'enregistrement dans un fichier journal qui peut être regardé avec un filesystemwatcher
Mise à jour: Trouvé à nouveau..
http://logging.apache.org/log4net/release/manual/configuration.html#.config%20Files
Il n'y a aucun moyen de recharger l'application.config en cours d'exécution.
Je vous conseille d'utiliser un autre fichier XML et non pas de l'app.config. Vous pouvez même regarder le fichier pour des changements et recharge automatiquement lorsqu'elle change.
Fait à l'aide d'un:
Application.restart();
A travaillé assez bon pour moi.
Ce qui concerne
Jorge
J'ai essayé d'utiliser le RefreshSection méthode et réussi à le faire fonctionner à l'aide de l'exemple de code suivant: