从appSettings中提取电子邮件地址

时间:2011-06-29 20:13:04

标签: c# web-config app-config

我正在尝试从app.config文件的appSettings部分提取电子邮件地址。每次运行测试时,reportRecipients都是Null。谁能看到我做错了什么?

  <appSettings>
    <add key="Overdue_Report_Recipients" value="myemail@email.com"/>
  </appSettings>

string reportRecipients = ConfigurationManager.AppSettings["Overdue_Report_Recipients"];

由于

修改 这适用于不是Web应用程序的项目。它是解决方案的一部分,其中大多数项目都是Web应用程序,但这个特定的项目是服务。抱歉与我删除它的asp.net标签混淆。

我在应用设置中存储了另一个值,我可以从中获取数据

<add key="Sweeper_Notify_When_None_Overdue" value="false"/> 

bool sendWhenNoneOverdue = 
                Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["Sweeper_Notify_When_None_Overdue"]);

解答: 我在一个单独的项目中运行我的测试,测试是从测试项目中的配置文件中读取,而不是我正在测试的项目中的app.config。 我不得不将设置复制到测试项目中的配置,然后测试工作。

3 个答案:

答案 0 :(得分:2)

使用ASP.NET,<appSettings>部分应该在web.config文件中,而不是您描述的app.config

当您从ConfigurationManager.AppSettings["some key"]网站或网络应用程序中拨打asp.net时,它会查看web.config文件。如果您已将密钥存储在app.config文件中,那么它将返回null。

如果您愿意,也可以将应用设置存储在与web.config不同的单独文件中。为此,请在web.config中输入:

<configuration>
  <appSettings file="someSettingsFile.config" />
  ...
</configuration>

然后在someSettingsFile.config中:

<appSettings>
    <add key="Overdue_Report_Recipients" value="myemail@email.com"/>
</appSettings>

我怀疑你错了appSettings在错误文件中的位置。只需将其移至您的web.config,您就可以了。

答案 1 :(得分:0)

var reportRecipients = ConfigurationManager.AppSettings["Overdue_Report_Recipients"].ToString();

更新

我刚才在自己的代码中注意到,不需要.ToString(),你在那里应该可以正常工作。

要确认,web.config应该类似于;

<?xml version="1.0"?>
<configuration>
  <appSettings>
    <add key="Overdue_Report_Recipients" value="myemail@email.com"/>
  </appSettings>
</configuration>

答案 2 :(得分:0)

我在一个单独的项目中运行我的测试,测试是从测试项目中的配置文件读取,而不是我正在测试的项目中的app.config。我不得不将设置复制到测试项目中的配置,然后测试工作。