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 的配置管理器中的网络配置是空白的怎么办

SQL Server 配置管理器在哪里找的?

LIstView 键盘导航类似于 WPF 中的 Windows 资源管理器

win10中打开SQL Server配置管理器方法

sqlserver的脚本文件是在配置管理器中执行的

一个 Xcode 管理器中的多个证书/配置文件?