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 文件中的所有连接字符串。中有三个连接字符串app.config,但是找到了四个连接字符串。在哪里: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 回答