it-swarm.com.de

Windows-Dienstkonfigurationsdatei C #

Ich habe eine Windows-Dienstanwendung entwickelt, die Visual Studio 2008/C # verwendet.

Ich habe eine app.config-Datei im Projekt. Nach der Installation wird die Datei app.exe.config neben der ausführbaren Datei angezeigt. Die Werte werden jedoch nicht gelesen, wenn ich über ConfigurationManager.AppSettings auf sie zugreifen möchte.

Hat es die Konfigurationsdatei an anderer Stelle kopiert oder gibt es ein anderes Problem, über das ich nichts weiß?

Danke im Voraus,

Martin.

Edit: Der Name der Konfigurationsdatei lautet infact my_exe_file_name.exe.config und sieht folgendermaßen aus:

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

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

  </appSettings>
</configuration>

und ich versuche zu lesen über:

ConfigurationManager.AppSettings["RuntimeFrequency"]

Der Debug-Wert, den ich ständig sehe, ist '1' und nicht '3'. Mache ich hier etwas falsch?

27
Martin

Ich habe den Fehler gefunden und er stand im Zusammenhang mit den Dateiberechtigungen. Nach der Installation des Dienstes konnte mein lokales Benutzerkonto nicht die Datei app.exe.config ändern.

Das Tool, das ich zum Editieren verwendete, informierte mich nicht darüber, dass der Zugriff zum Speichern der Datei verweigert wurde. Dies ist Notizblock ++, wenn jemand interessiert ist. Daher konnte ich nicht erkennen, dass es nicht über der alten Konfigurationsdatei gespeichert wurde.

Jetzt gelöst, danke an alle.

Martin.

26
Martin

Wenn Sie sich im Debug-Modus befinden, prüfen Sie, welche Einstellungen in der Datei my_exe_dateiname.vshost.exe.config enthalten sind. Stellen Sie außerdem sicher, dass Sie diese in der Datei app.config anpassen. Visual Studio sollte die endgültige Konfigurationsdatei in Ihren Bin/Debug-Ordnern aktualisieren. 

3
Aaron Fischer

Möglicherweise aktualisieren Sie die falsche Konfigurationsdatei. Sie sollten das noch einmal überprüfen

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

Im Allgemeinen lege ich für die Windows-Dienste, die ich schreibe, die Datei appName.exe.config in C:\WINDOWS\system32\ab. 

Möglicherweise haben Sie eine ältere Version in diesem Verzeichnis, in der Ihr Dienst den Wert abruft, obwohl Sie die Konfigurationsdatei in Ihrem Projekt aktualisiert haben.

1
Dave Baghdanov

Die Datei "App.config" sollte in "your_exe_file_name.exe.config" umbenannt und in der Nähe der Exe-Datei platziert werden.

0
Alex Reitbort

Ist es möglich, dass Sie mehr als eine Instanz des RuntimeFrequency-Eintrags definiert haben? Der ConfigurationManager liest die Datei von oben nach unten und verarbeitet jede Einstellung einzeln. Daher wird der letzte in der Datei definierte Wert von RuntimeFrequency von ihm verwendet. 

Wenn Sie genau wissen möchten, ob Ihre Datei verwendet wird, würde ich einfach alle Definitionen für RuntimeFrequency entfernen oder auskommentieren (Fehler beim Kopieren/Einfügen auftreten) und einen Anwendungsfehler abwarten, wenn ConfigurationManager versucht, auf einen Eintrag in AppSettings zu verweisen ist nicht vorhanden.