7
votes

Service Windows - Fichier de configuration

Je sais que cela a probablement été demandé avant, mais je ne peux pas sembler trouver la bonne réponse pour moi.

J'ai un service Windows nommé foobar.exe . J'ai un fichier de configuration d'application nommé foobar.exe.config dans le même dossier.

est le fichier de configuration que lue uniquement au démarrage?

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.

Qu'est-ce que je fais mal?

Un service Windows peut avoir un fichier de configuration dynamique?


2 commentaires

Ce service est-il écrit dans .NET?


Oui, c'est un service Web .NET


3 Réponses :


2
votes

En supposant que votre service Windows a été écrit avec .NET:

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.

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.


0 commentaires

8
votes

.NET Les applications lireont leurs fichiers de configuration au démarrage et les mettre en cache pour des raisons de performance.

Je vois deux manières de base autour de ceci:

  • 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

  • Un service Windows NT peut répondre à un spécial oncustomcommand é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


2 commentaires

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") et cette section sera rechargée du disque lorsque vous l'accédez ensuite. Voir le ConfigurationManager MSDN Docs



2
votes

Vous devrez peut-être consulter l'utilisation de fichiersSystemwatcher. Voir l'exemple de code Pseudo-C # ci-dessous. xxx


0 commentaires