WPF 中的配置管理器
Posted
技术标签:
【中文标题】WPF 中的配置管理器【英文标题】:ConfigurationManager in WPF 【发布时间】:2014-03-04 12:37:34 【问题描述】:我在 wpf 项目中有一个配置文件来存储连接字符串。 但是当我尝试获取 AppSettings 和 ConnectionStrings 时,我得到了 null。
WEB.config文件是这样的:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="Trackboard" connectionString="Data Source=(localdb)\v11.0;Initial Catalog=Trackboard;Integrated Security=True;AttachDbFileName=E:\Users\Sean\Workspace\DATABASE\Trackboard.mdf"/>
</connectionStrings>
<appSettings>
<add key="Trackboard" value="Data Source=(localdb)\v11.0;Initial Catalog=Trackboard;Integrated Security=True;AttachDbFileName=E:\Users\Sean\Workspace\DATABASE\Trackboard.mdf"/>
</appSettings>
</configuration>
我尝试了几种方法:
W1: ConnStr = ConfigurationManager.ConnectionStrings["Trackboard"].ConnectionString;
W2: ConnStr = ConfigurationManager.ConnectionStrings[0].ConnectionString;
W3: ConnStr = ConfigurationManager.AppSettings["Trackboard"];
W4: ConnStr = ConfigurationManager.AppSettings[0];
它们都不起作用。
但是这个有效:
ConnStr = @"Data Source=(localdb)\v11.0;Initial Catalog=Trackboard;Integrated Security=True;AttachDbFileName=E:\Users\Sean\Workspace\DATABASE\Trackboard.mdf";
(这意味着我不能使用配置文件,这违背了我的意愿) 我需要帮助。
【问题讨论】:
为什么选择 WEB.config 用于 WPF 应用程序。它必须是APP.config。 :P 我只是把它重命名为 WEB.config 【参考方案1】:只需添加 app.config
而不是 web.config
,因为它不是 Web 应用程序。
然后太简单了,只需添加对 System.Configuration 的引用,然后使用它。
var ConnStr = ConfigurationManager.AppSettings["Trackboard"];
【讨论】:
【参考方案2】:这个使用System.Configuration
命名空间
using System.Configuration;
或者在引用中添加System.Configuration
System.ConfigurationManager.ConnectionStrings["Trackboard"].ConnectionString;
System.ConfigurationManager.ConnectionStrings[0].ConnectionString;
【讨论】:
我确实添加了 System.Configuration 引用和命名空间。问题似乎是 System.ConfigurationManager.ConnectionStrings 的计数为 0,这就是为什么我无法通过键或索引获取值。这很奇怪。它适用于 winform 应用程序。【参考方案3】:我想通了! 我不应该创建一个新的配置文件。项目中有一个默认的 app.config 文件。 现在一切都很好。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
</configSections>
<connectionStrings>
<add name="Trackboard.Properties.Settings.TrackboardConnectionString"
connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\DATABASE\Trackboard.mdf;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
private static string ConnStr = ConfigurationManager.ConnectionStrings["Trackboard.Properties.Settings.TrackboardConnectionString"].ConnectionString;
【讨论】:
以上是关于WPF 中的配置管理器的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server 2008 的配置管理器中的网络配置是空白的怎么办