web-dev-qa-db-fra.com

Fichier de configuration de service Windows C #

J'ai développé une application de service Windows à l'aide de Visual Studio 2008/C #.

J'ai un fichier app.config dans le projet. Une fois installé, le fichier app.exe.config apparaît à côté de l'exécutable, mais il ne semble pas en lire les valeurs lorsque j'essaie d'y accéder via ConfigurationManager.AppSettings.

A-t-il copié le fichier de configuration ailleurs ou existe-t-il un autre problème que je ne connais pas?

Merci d'avance,

Martin.

Edit: Le nom du fichier de configuration est infact my_exe_file_name.exe.config, il ressemble à:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>

    <add key="RuntimeFrequency" value="3" />

  </appSettings>
</configuration>

et j'essaye de lire via:

ConfigurationManager.AppSettings["RuntimeFrequency"]

La valeur de débogage que je vois continuellement est "1" et non "3". Est-ce que je fais quelque chose de mal ici?

27
Martin

J'ai localisé l'erreur et cela était lié aux autorisations de fichiers. Après l'installation du service, mon compte d'utilisateur local n'a pas eu accès pour modifier le fichier app.exe.config.

L'outil que j'utilisais pour éditer ne m'informait pas qu'il était refusé l'accès pour enregistrer le fichier - c'est notepad ++ si quelqu'un est intéressé - et je ne pouvais donc pas voir qu'il ne sauvegardait pas par-dessus l'ancien fichier de configuration.

Résolu maintenant, merci à tous.

Martin.

26
Martin

Lorsque vous êtes en mode débogage, vérifiez les paramètres du fichier my_exe_nom_fichier.vshost.exe.config. Veillez également à l'ajuster dans le fichier app.config. Visual studio doit mettre à jour le fichier de configuration final dans vos dossiers bin/debug. 

3
Aaron Fischer

Peut-être que vous mettez à jour le mauvais fichier de configuration. Vous devriez vérifier que l'utilisation de

System.Configuration.ConfigurationManager.OpenExeConfiguration(PATH_TO_CONFIG);
2
Igor Zelaya

En général, pour les services Windows que j’écris, je laisse tomber le fichier appName.exe.config dans C:\WINDOWS\system32 \. 

Vous avez peut-être une version plus ancienne dans ce répertoire, où votre service obtient la valeur, même si vous avez mis à jour le fichier de configuration dans votre projet.

1
Dave Baghdanov

Le fichier App.config doit être renommé en nom_fichier_exe.exe.config et placé à proximité du fichier exe.

0
Alex Reitbort

Est-il possible que plusieurs instances de l'entrée RuntimeFrequency soient définies? Le ConfigurationManager lit le fichier de haut en bas et traite chaque paramètre individuellement. Par conséquent, la dernière valeur de RuntimeFrequency définie dans le fichier est celle qu'il utilisera. 

Si vous voulez savoir avec certitude si votre fichier est utilisé, je voudrais simplement supprimer ou commenter toute définition de RuntimeFrequency (des erreurs de copier/coller surviennent) et attendre de voir une erreur d'application lorsque ConfigurationManager tente de référencer une entrée dans AppSettings. n'existe pas.

0