我正在尝试从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。 我不得不将设置复制到测试项目中的配置,然后测试工作。
答案 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。我不得不将设置复制到测试项目中的配置,然后测试工作。