Wie zu Lesen ist-Werte aus der App.config .Net 4.0 mit configurationManager?

Erstelle ich einen windows Dienst in .Net 4.0 und dem testen einiger Funktionen des Sprach-service mit einer windows-forms-client durch einen Verweis auf die service-Projekt.

Den service-Projekt hat eine App.config-Datei und die Datei sieht wie folgt aus:

<?xml version="1.0" encoding="utf-8" ?>
  <configuration>
     <connectionStrings>
       <clear />
       <add name="myLocalMySQLDBUsername" connectionString="username"/>
     </connectionStrings>
  </configuration>

Wenn eine Funktion gehören die service-Aufrufe:

  • ConfigurationManager.ConnectionStrings("myLocalMySQLDBUsername").ConnectionString

einer null-Referenz-Fehler ausgelöst, weil mein connection string ist nicht geladen. Den nur connectionStrings, die geladen werden sind von der Maschine.config-Datei befindet sich in c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Config\machine.config

Wenn ich eine Anwendung erstellen, die Rahmen-Einstellung für den Dienst, den ich bekommen kann, die Einstellung mit der Meinen.Einstellungen.Einstellung -> so ist es nicht wie die App.config-file nicht Lesen.

Meine Frage ist: warum sind meine connectionStrings nicht geladen aus dem App.config-Datei?

Danke für Eure Hilfe.

UPDATE:

Auch, an dieser Stelle auch ein umgehen würde geschätzt werden; der einzige Grund für die Verwendung der app.config ist in der Lage sein, der zum verschlüsseln der Inhalte unter Verwendung der DpapiProtectedConfigurationProvider (die Inhalte müssen einige Benutzernamen/Passwort-Werte für service-und Datenbank-verbindungen).

Habe ich versucht die Schaffung einer AppSettings-Abschnitt manuell in die app.config, aber diese Einstellungen waren auch nicht gelesen von der configurationManager (count = 0).

UPDATE 2:

Pro eine Anregung, ich habe versucht, manuell die app öffnen.config-Datei, etwa so:

Dim exePath As String = System.IO.Path.Combine(Environment.CurrentDirectory, "ServiceName.exe")

Dim myConfig As Configuration = ConfigurationManager.OpenExeConfiguration(exePath)

So, hier ist der seltsame Teil, wenn ich von innen sehen, den Pfad korrekt ist (Punkte auf meine app.config), aber die connectionStrings sind immer noch geladen von der Maschine.config-Datei (meine connectionStrings sind nicht geladen)!! ARGH

UPDATE 3:

Okay, also habe ich es herausgefunden. Beim Verweis auf ein Projekt(Eltern) aus einem anderen Projekt(Kind), das Kind ' s app.config verwendet, auch wenn die übergeordneten Klassen verwendet werden. Also, ich kann die connectionStrings zu zeigen, wenn ich Sie über kopieren des Kindes-app.config. Wenn Sie versuchen, öffnen Sie es manuell, meine currentDirectory war das Kind, nicht die Eltern (seltsam, wie es nicht eine exception zu werfen - es würde nicht in der Lage gewesen zu finden, die config-Datei ... es werden nur im hintergrund benutzt die Maschine.config ... naja).

Vielen Dank an alle für die Hilfe!

  • Mag eine dumme Frage sein, aber wie stellen Sie den service und seine app.config? Sie haben ein servicename.exe.config im richtigen Verzeichnis?
  • Ich habe nicht bereitgestellt es noch ... ist alles noch im debugging-auf meinem lokalen Rechner. Wenn ich es bereitstellen, ich will sicher sein, dass die config-Datei landet im Ordner "System32" (glaube ich) oder was auch immer Ordner, in dem windows services suchen-Dateien standardmäßig.
  • umgehen geschrieben.
InformationsquelleAutor Dima | 2011-04-10
Schreibe einen Kommentar