2 Stimmen

app.config Seltsamkeiten

Ich habe eine seltsame Sache passiert mit meiner app.config-Datei. Meine ConnectionStrings Abschnitt enthält diese:

<connectionStrings>
  <add name="Connection" connectionString="Data Source=TheServer;
   Initial Catalog=TheDatabase;IntegratedSecurity=SSPI" 
   providerName="System.Data.SqlClient"/>
</connectionStrings>

Wenn ich den Abschnitt jedoch über ConfigurationManager.ConnectionStrings[0] abfrage, erhalte ich diese Verbindungszeichenfolge zurück:

Data Source=.\\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true

Woher bekommt sie diesen Wert?

6voto

Pawel Krakowiak Punkte 9670

Sie wird aus der Datei machine.config gelesen. Sie können entweder sicherstellen, dass alle Verbindungszeichenfolgen gelöscht werden, bevor Sie Ihre eigenen hinzufügen:

<connectionStrings>
  <clear/>
  <add name="Connection" connectionString="Data Source=TheServer;
   Initial Catalog=TheDatabase;IntegratedSecurity=SSPI" 
   providerName="System.Data.SqlClient"/>
</connectionStrings>

Oder referenzieren Sie Ihre Verbindungszeichenfolgen einfach nie durch Indizes, sondern verwenden Sie Namen, die Sie ihnen geben:

ConfigurationManager.ConnectionStrings["Connection"]

1voto

Jason Punyon Punkte 38137

Sie stammt aus der machine.config. .NET führt die Abschnitte der Verbindungszeichenfolge (und einige andere, glaube ich) Ihrer Anwendungskonfiguration (oder Webkonfiguration) und Ihrer machine.config automatisch zusammen.

Sie können nachlesen, wie das in ASP.NET funktioniert aquí .

1voto

NikolaiDante Punkte 18043

Sie kommt aus einer anderen Konfiguration, entweder aus einer höher gelegenen app.config im Baum oder aus der Maschinenkonfiguration. Um alles andere zu ignorieren, verwenden Sie <clear /> um alles loszuwerden, was nicht in der aktuellen Konfiguration enthalten ist.

<connectionStrings>
   <clear />
   <add name="Connection" connectionString="Data Source=TheServer;
     Initial Catalog=TheDatabase;IntegratedSecurity=SSPI" 
     providerName="System.Data.SqlClient"/>
</connectionStrings>

0voto

Canavar Punkte 46926

Ergänzung zu Naths Antwort: Das ist besser:

ConfigurationManager.ConnectionStrings["Connection"]

0voto

Matthew Dresser Punkte 10948

Obwohl die Frage bereits von Jason Punyon beantwortet wurde, würde ich dringend empfehlen, auf Ihre Verbindungszeichenfolgen über ihren Namen und nicht über ihren Index zuzugreifen. z.B..

ConfigurationManager.ConnectionStrings["Connection"]

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X