2011-06-29 110 views
0

我想从app.config文件的appSettings部分拉电子邮件地址。每次运行测试时,reportRecipients都为空。任何人都可以看到我做错了什么?从appSettings拉电子邮件地址

<appSettings> 
    <add key="Overdue_Report_Recipients" value="[email protected]"/> 
    </appSettings> 

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

感谢

编辑: 这是一个项目,是不是一个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

你有这在你的web.config,对不对?在“配置” - >“configSections”下? – Zachary

+0

@Zachary,我同意我认为罗纳德可能没有元素。 – Jethro

+0

如果使用索引0而不是密钥,会得到什么结果? –

回答

0

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

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

更新。

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

只是为了确认,web.config应该类似于;

<?xml version="1.0"?> 
<configuration> 
    <appSettings> 
    <add key="Overdue_Report_Recipients" value="[email protected]"/> 
    </appSettings> 
</configuration> 
+0

OP注意到使用app.Settings文件,但应该使用web.config作为ASP.NET项目。我在回答中已经注意到了这一点。 –

2

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

当您在您的asp.net网站或网络应用程序中致电ConfigurationManager.AppSettings["some key"]时,它将查看web.config文件。如果你已经将你的密钥存储在app.config文件中,那么它就是为什么它返回null。

如果您愿意,也可以将您的应用程序设置存储在与web.config不同的文件中。要做到这一点,在你的web.config放:

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

然后在someSettingsFile.config:但是

<appSettings> 
    <add key="Overdue_Report_Recipients" value="[email protected]"/> 
</appSettings> 

我怀疑你只是放错了地方在错误的文件appSettings位置。把它移到你的web.config,你应该没问题。

+0

有没有办法使用app.config文件来做到这一点? –

+0

你可以尝试引用app.config文件作为'appSettings'部分的外部引用,就像在你的web.config''中一样,但是我不确定是否存在分支。我应该工作。 ASP.NET将始终首先查看web.config,因此如果要为该节使用单独的文件,则必须使用'file =“”'属性。 –

相关问题