C# 从外部配置文件读取连接字符串
我已经创建了一个控制台应用程序、app.config文件和Connections.config文件。 app.config文件具有指向Connections.config的connectionstring属性源 当我试图读取应用程序中的连接字符串时,我得到一个C# 从外部配置文件读取连接字符串,c#,connection-string,app-config,external,configuration-files,C#,Connection String,App Config,External,Configuration Files,我已经创建了一个控制台应用程序、app.config文件和Connections.config文件。 app.config文件具有指向Connections.config的connectionstring属性源 当我试图读取应用程序中的连接字符串时,我得到一个ConfigurationErrorException 这是我的主要方法 static void Main(string[] args) { var settings = ConfigurationManager.C
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>
<?xml version="1.0" encoding="utf-8" ?>
<connectionStrings>
<add name="SQLDBConnecion"
providerName="System.Data.ProviderName"
connectionString="" />
</connectionStrings>
它返回的第二个连接字符串是空字符串(这是预期的)
我想像在我的场景中一样从外部文件读取连接字符串。怎么做?我在这里错过了什么
不要包含任何其他元素、节或属性
您需要删除XML编码
编辑
此外,您需要将配置文件的属性设置为Copy to Output Directory=Copy if newer
或Copy always
编辑2
为了建立Dave所说的,您将clear
元素添加到外部文件中。您的最终Connections.config
文件应如下所示:
<connectionStrings>
<clear/>
<add name="Name"
providerName="System.Data.ProviderName"
connectionString="Valid Connection String;" />
</connectionStrings>
您的Connections.config文件应如下所示,不带xml头
<connectionStrings>
<add name="SQLDBConnecion"
providerName="System.Data.ProviderName"
connectionString="" />
</connectionStrings>
此外,为了在控制台应用程序中正确定位文件,请将“复制到输出目录”设置为“始终复制”或“复制(如果更新)。您获得的第一个连接字符串是从machine.config继承的。MSDN文档中对此进行了描述 您可以使用配置文件中的Clear标记删除继承的连接字符串。
有一篇关于MSDN的好文章: 文章引述: 要在外部配置文件中存储连接字符串,请创建 仅包含ConnectionString部分的单独文件。做 不包括任何其他元素、节或属性。这 示例显示了外部配置文件的语法
希望这对以后遇到此问题的人有所帮助。生成操作不是强制性的,如果将“复制到输出目录”设置为“始终复制”,或将“复制”设置为“更新”,则生成操作默认为“内容”。否则回答得很好-+1xml头没有任何区别。设置副本总能解决问题。非常感谢。
<connectionStrings>
<add name="SQLDBConnecion"
providerName="System.Data.ProviderName"
connectionString="" />
</connectionStrings>
<connectionStrings>
<clear/>
<add name="SQLDBConnecion"
providerName="System.Data.ProviderName"
connectionString="" />
</connectionStrings>
<connectionStrings>
<add name="Name"
providerName="System.Data.ProviderName"
connectionString="Valid Connection String;" />
</connectionStrings>