14

以下のコードを参照してください。

Public Shared Sub SyncConnectionStrings()
    Dim strCon As String
    Dim tyDatabase As typeDatabase
    Dim boolConfigChanged As Boolean
    'Dim config As System.Configuration.Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
    Dim config As Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
    Dim strConnectionString As ConnectionStringSettings            
    For Each strConnectionString In ConfigurationManager.ConnectionStrings
        'More code here, but irrelevant for this question.
    Next
End Sub

このコードは、app.config ファイル内のすべての接続文字列をループ処理します。には 3 つの接続文字列がありますがapp.config、4 つの接続文字列が見つかりました。どこにありますか: LocalSqlServer (これはConfigurationManager.ConnectionStrings.Name) が定義されていますか?

4

2 に答える 2

16

これは、次の場所にある Machine.config グローバル ファイルで定義されています。

"C:\Windows\Microsoft.NET\Framework\v4.0.30319\CONFIG".

NET.Framework のインストール時に生成され、ASPNETDB で動作するツールで必要になります。

必要ない場合は、これを app.config に追加してみてください。

<connectionStrings>
<clear/>
.....

またはまた

<connectionStrings>
<remove name="LocalSqlServer" />

副作用がわからない限り、Machine.Config は何も変更しないことをお勧めします。

于 2013-05-07T10:29:59.693 に答える
6

Machine.config に LocalSqlServer 以外のものを含めることもできます。たとえば、Machine.config で MySql 接続を使用してコンピューターでアプリを実行したところです。

ElementInformationのプロパティを使用してConnectionStringSetting、それがどこから来たかを判断できます。

foreach (ConnectionStringSettings c in ConfigurationManager.ConnectionStrings)
{
    ElementInformation elementInfo = c.ElementInformation;
    String source = elementInfo.Source;

    if (source == null)
    {
        //Machine.config
    } 
    else
    {
        Console.WriteLine("{0} {1} {2}", c.Name, elementInfo.Source, c.ConnectionString);
    }
}
于 2015-01-02T20:58:55.423 に答える