2

app.configファイルで奇妙なことが起こっています。私のConnectionStringsセクションにはこれが含まれています:

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

ただし、ConfigurationManager.ConnectionStrings [0]を介してセクションをクエリすると、次の接続文字列が返されます。

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

この値はどこから取得していますか?

4

5 に答える 5

6

これは machine.config から読み取られます。独自の接続文字列を追加する前に、すべての接続文字列を確実にクリアすることができます。

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

または、接続文字列をインデックスで参照しないでください。指定した名前を使用してください。

ConfigurationManager.ConnectionStrings["Connection"]
于 2009-03-12T12:30:18.993 に答える
1

これは machine.config から取得されます。.NET は、アプリケーション構成 (または Web 構成) と machine.config の接続文字列セクション (および私が信じている他のいくつか) を自動的にマージします。

ASP.NET での動作については、こちらを参照してください。

于 2009-03-12T12:26:35.850 に答える
1

ツリーの上位の app.config またはマシン構成のいずれかである、別の構成からのものです。他のものを無視する<clear />には、現在の構成にないものを取り除くために使用します。

<connectionStrings>
   <clear />
   <add name="Connection" connectionString="Data Source=TheServer;
     Initial Catalog=TheDatabase;IntegratedSecurity=SSPI" 
     providerName="System.Data.SqlClient"/>
</connectionStrings>
于 2009-03-12T12:28:05.223 に答える
0

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

ConfigurationManager.ConnectionStrings["Connection"]
于 2009-03-12T12:34:04.243 に答える
0

Nathの答えに加えて、これはより良いです:

ConfigurationManager.ConnectionStrings["Connection"]
于 2009-03-12T12:30:42.753 に答える