从外部配置文件中读取连接字符串(Reading connection string from ext

2019-08-31 18:24发布

我创建了一个控制台应用程序和app.config文件和Connections.config文件。 App.config文件具有指向Connections.config一个ConnectionString属性源

当我试图读取连接字符串中的应用程序,我得到一个ConfigurationErrorException

这是我的主要方法。

static void Main(string[] args)
    {
        var settings = ConfigurationManager.ConnectionStrings;
        if (settings != null)
        {
            foreach (ConnectionStringSettings setting in settings)
            {
                Console.WriteLine(setting.ConnectionString);
            }
        }
    }

App.config文件

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings configSource="Connections.config"></connectionStrings>
</configuration>

Connections.config文件

<?xml version="1.0" encoding="utf-8" ?>
<connectionStrings>
  <add name="SQLDBConnecion"
   providerName="System.Data.ProviderName"
   connectionString="" />
</connectionStrings>

在这里,我看到两件事情。 第一:如果我指定configSource我无法读取连接字符串(抛出异常。)

第二:如果我把相同的连接字符串中App.config文件,并试图读取,则代码工作,但得到两个连接字符串(应该是只返回一个里面是空的字符串)的第一个连接字符串是这样SQLEXPRESS连接字符串

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

它返回第二个连接字符串为空字符串(这是预期)。

我想读从外部文件的连接字符串就像我的情况。 怎么做? 我缺少的是在这里吗?

Answer 1:

MSDN说 :

不包括任何其他元素,部分或属性。

您需要删除XML编码。

编辑

此外,您还需要设置配置文件的属性Copy to Output Directory = Copy if newerCopy always

编辑2

要建立什么戴夫说,你的加入clear元素到外部文件。 您的最终Connections.config文件应如下所示:

<connectionStrings>
  <clear/>
  <add name="Name"
     providerName="System.Data.ProviderName"
     connectionString="Valid Connection String;" />
</connectionStrings>


Answer 2:

你Connections.config文件应该如图6-8所示,而不XML头

<connectionStrings>
  <add name="SQLDBConnecion"
   providerName="System.Data.ProviderName"
   connectionString="" />
</connectionStrings>

也为它正确地定位在控制台应用程序文件,请复制设置输出目录始终复制复制如果较新



Answer 3:

您获得的第一个连接字符串从machine.config中继承。 这是MSDN文档中描述。 http://msdn.microsoft.com/en-us/library/bf7sd233(v=vs.90).aspx

您可以使用清除标签在你的配置文件来删除继承的连接字符串。 http://msdn.microsoft.com/en-us/library/ayb15wz8(v=vs.90).aspx

<connectionStrings>
  <clear/>
  <add name="SQLDBConnecion"
   providerName="System.Data.ProviderName"
   connectionString="" />
</connectionStrings>


Answer 4:

有MSDN上的一篇好文: https://msdn.microsoft.com/en-us/library/ms254494(v=vs.110).aspx 。

从文章引述如下:

存储连接字符串外部配置文件,创建仅包含connectionStrings节一个单独的文件。 不包括任何其他元素,部分或属性。 此示例示出了用于外部配置文件的语法。

<connectionStrings>
  <add name="Name" 
   providerName="System.Data.ProviderName" 
   connectionString="Valid Connection String;" />
</connectionStrings>

希望这有助于谁碰到这个问题以后的人。



文章来源: Reading connection string from external config file