Je sais que cela a probablement été demandé avant, mais je ne peux pas sembler trouver la bonne réponse pour moi. P>
J'ai un service Windows nommé foobar.exe em> strong>. J'ai un fichier de configuration d'application nommé est le fichier de configuration que lue uniquement au démarrage? strong> p>
Je voudrais apporter des modifications au fichier de configuration sans avoir à redémarrer le service, mais c'est le seul moyen de lire les nouveaux paramètres. P>
Un service Windows peut avoir un fichier de configuration dynamique? strong> p>
3 Réponses :
En supposant que votre service Windows a été écrit avec .NET: p>
Les fichiers de configuration sont uniquement lus au démarrage. Si vous modifiez des valeurs dans la configuration, vous devrez redémarrer le service afin d'être pris en charge. P>
Si vous souhaitez avoir une configuration dynamique, vous devez implémenter cela vous-même - interroger le système de fichiers pour voir si le fichier de configuration a changé et appliquer les modifications. P>
.NET Les applications lireont leurs fichiers de configuration au démarrage et les mettre en cache pour des raisons de performance. P>
Je vois deux manières de base autour de ceci: p>
Dans votre service, gardez une trace de la dernière date / heure de mise à jour pour le fichier de configuration. Vérifiez cette dernière date de mise à jour régulièrement et si vous détectez une modification, reprogrammez le fichier de configuration p> li>
Un service Windows NT peut répondre à un spécial oncustomcommand code> événement. Vous pouvez implémenter un tel gestionnaire d'événements pour recharger la config, et lorsque vous modifiez la configuration, vous pouvez avoir un petit utilitaire pour signaler à votre service que la configuration a changé et envoyez cette "commande personnalisée" à votre service p> li>
ul>
Ok, pardonne mon ignorance. Lorsque mon processus détecte que le fichier de configuration a changé, comment "recharger" la configuration? J'utilise ConfigurationManager.appsettings ["réglage"] dans mon code.
@HOBOBANMAN: Vous pouvez appeler ConfigurationManager.refresection ("AppSettings") CODE> et cette section sera rechargée du disque lorsque vous l'accédez ensuite. Voir le ConfigurationManager MSDN Docs
Vous devrez peut-être consulter l'utilisation de fichiersSystemwatcher. Voir l'exemple de code Pseudo-C # ci-dessous.
Ce service est-il écrit dans .NET?
Oui, c'est un service Web .NET