2009-03-12 10 views
2

J'ai une chose étrange qui se passe avec mon fichier app.config. Ma section ConnectionStrings contient ceci:app.config weirdness

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

Cependant, quand je fais une recherche de la section via ConfigurationManager.ConnectionStrings [0], je reviens cette chaîne de connexion:

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

Où est ce que cela devient cette valeur?

Répondre

6

Il est lu à partir machine.config, vous pouvez vous assurer d'effacer toutes les chaînes de connexion avant d'ajouter votre propre:

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

Ou tout simplement jamais référencer vos chaînes de connexion par des index, utilisez des noms vous donnez-leur:

ConfigurationManager.ConnectionStrings["Connection"] 
+0

Je crois que c'est la bonne réponse, me battre à elle. – NeedHack

1

Il provient de machine.config. .NET fusionne automatiquement les sections de chaînes de connexion (et d'autres, je crois) de votre application config (ou web config) et votre machine.config.

Vous pouvez lire sur comment cela fonctionne dans ASP.NET here.

+0

Je vois. Je vous remercie. Pourquoi ne fait-il pas référence au fichier app.config alors? Je n'ai jamais eu cela avant. – woodstock

+0

@woodstock: il est, mais vous l'appelez par l'index, et 0 arrive à être le premier défini dans la hiérarchie –

1

Cela vient d'une autre config, soit un app.config plus haut dans l'arbre ou la config de la machine. Pour ignorer toute autre chose, utilisez <clear /> pour vous débarrasser de tout ce qui n'est pas dans la configuration actuelle.

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

Ajout à la réponse de Nath, ce qui est mieux:

ConfigurationManager.ConnectionStrings["Connection"] 
0

Bien que Jason Punyon ait répondu à la question, je vous recommande vivement d'accéder à vos chaînes de connexion via leur nom plutôt que leur index. par exemple.

ConfigurationManager.ConnectionStrings["Connection"] 
+0

Oops, un peu en retard là-bas ... –