c# - 从外部配置文件读取连接字符串

标签 c# connection-string app-config external configuration-files

我已经创建了一个控制台应用程序以及一个 app.config 文件和 Connections.config 文件。 app.config 文件有一个连接字符串属性源指向 Connections.config

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

这是我的主要方法。

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

应用程序配置文件

<?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

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

我想像在我的场景中一样从外部文件读取连接字符串。怎么做?我在这里缺少什么?

最佳答案

MSDN says :

Do not include any additional elements, sections, or attributes.

您需要删除 XML 编码。

编辑

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

enter image description here

编辑2

要以 Dave 所说的为基础,您添加 clear元素到您的外部文件。你的决赛Connections.config文件应该看起来完全像这样:

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

关于c# - 从外部配置文件读取连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16148748/

相关文章:

c# - Entity Framework 超时

sql-server - 在 SSIS 包中存储密码

c# - BinaryReader.ReadInt32 结果与输入文件相比出乎意料,为什么?

c# - 如何在 MVC3 View 中从 Markdown 文本中突出显示 C# 语法

c# - SQL Express 连接字符串 : mdf file location relative to application location

c# - 如何重新加载/刷新 app.config?

.net - 样式指南/布局 web.config 和 app.config 以获得持续支持的最佳方式

c# - 如何在运行时修改我的 App.exe.config key ?

c# - 可空类型的静态成员

C#过滤对象集合