4

我想从我的项目的 App.config 文件中读取一些值,但是当我这样做时:

var appsettings = System.Configuration.ConfigurationManager.AppSettings;

我只得到四个条目:StopTestRunCallTimeoutInSeconds、和LogSizeLimitInMegs,它们甚至没有在 XML 中列出。我的钥匙甚至没有出现。CreateTraceListenerGetCollectorDataTimeoutusernamepassword

我的 App.Config 看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <appSettings>
    <add key="username" value="Administrator" />
    <add key="password" value="password" />
  </appSettings>
  <system.web>
    <membership defaultProvider="ClientAuthenticationMembershipProvider">
      <providers>
        <add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
      </providers>
    </membership>
    <roleManager defaultProvider="ClientRoleProvider" enabled="true">
      <providers>
        <add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
      </providers>
    </roleManager>
  </system.web>
</configuration>

我错过了什么吗?在我看来,我正在从一个完全不同的配置文件中读取,但没有其他配置文件。

4

3 回答 3

14

我找到了解决方案!问题是,我调试了一个单元测试,它位于同一解决方案中的不同子项目中。我将 app.config 文件复制到与单元测试相同的项目中,现在它工作正常。感谢您的帮助!

于 2013-04-25T08:39:46.420 回答
3

您可以通过按名称拉取应用程序设置来读取它们

var username = ConfigurationManager.AppSettings["username"]
var password = ConfigurationManager.AppSettings["password"]

AppSettings 的基础数据类型是 NameValueCollection。因此,您根据键提取值。

这是 AppSettings 的文档,其中显示了一个示例 http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.appsettings.aspx

于 2013-04-24T16:01:37.353 回答
2

听起来您正在阅读 QTAgentService.exe.config 而不是 app.config。

http://msdn.microsoft.com/en-us/library/ff934570.aspx

于 2013-04-24T16:04:35.000 回答