2009-03-12 9 views
2

私のapp.configファイルで奇妙なことが起こっています。私のconnectionStringsセクションには、これを含んでいます。それから、この値を取得しているapp.config weirdness

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

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

しかし、私はConfigurationManager.ConnectionStrings経由セクションのクエリを実行したときに[0]、私は戻って、この接続文字列を取得しますか?

答えて

6

、あなた自身を追加する前に、すべての接続文字列をクリアすることを確認することができ、次のいずれか

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

それとも名前だけあなたを使用して、インデックスして、接続文字列を参照することはありませんがそれらを与える:

ConfigurationManager.ConnectionStrings["Connection"] 
+0

これは正しい答えだと私は思う。 – NeedHack

1

machine.configに由来します。 .NETアプリケーション構成(またはWeb設定)とmachine.configの接続文字列セクション(と私が信じている他のもの)を自動的にマージします。

これはASP.NET hereでどのように動作するかについて読むことができます。

+0

です。ありがとうございました。なぜそれがapp.configファイルを参照していないのですか?私はこれが前に起こったことはありませんでした。 – woodstock

+0

@woodstock:それはインデックスだが、それはインデックスによって呼び出され、0は階層内で定義された最初のものになる。 –

1

これは別の設定から来ています。これはツリーの上位app.configかマシン設定です。何も無視するには、<clear />を使用して、現在の設定にないものを取り除きます。これは、のmachine.configから読み込まれる

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

ナースの答えに加えて、これは良いです:

ConfigurationManager.ConnectionStrings["Connection"] 
0

質問はJason Punyonによって回答されましたが、インデックスではなく名前で接続文字列にアクセスすることを強くお勧めします。例:

ConfigurationManager.ConnectionStrings["Connection"] 
+0

おっと、少し遅れました... –