首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#:System.Configuration.Configuration在寻找什么?

C#:System.Configuration.Configuration在寻找什么?
EN

Stack Overflow用户
提问于 2012-07-10 04:06:23
回答 2查看 1.4K关注 0票数 3

我有以下测试方法:

代码语言:javascript
复制
[TestMethod]
public void TestHarvestMethod()
{
    HarvestTargetTimeRangeUTC time = new HarvestTargetTimeRangeUTC();
    time.StartTimeUTC = new DateTime(2008, 01, 01, 00, 00, 00, DateTimeKind.Utc);
    time.EndTimeUTC = DateTime.UtcNow;
    XElement lIntelexReport = XElement.Parse(rawXml);
    Harvester target = new Harvester();
    target.ConfigureHarvester((System.Configuration.Configuration)null);  
    var res = target.Harvest(time);
    Console.WriteLine(res);
 }

与此方法配合使用的方法:

代码语言:javascript
复制
public void ConfigureHarvester(System.Configuration.Configuration configuration)
{
    reportId = Int32.Parse(configuration.AppSettings.Settings["IncidentReport"].Value);
}

要测试此方法:

代码语言:javascript
复制
public XElement Harvest(HarvestTargetTimeRangeUTC ranges)
{
    XElement lIntelexReport = IntelexServiceCall();  
    return XMLConversion(QueryData(ranges, lIntelexReport));
}

问题是我收到Null异常错误,指出"Object reference not set to an object instance“。在这一行上:

代码语言:javascript
复制
reportId = Int32.Parse(configuration.AppSettings.Settings["IncidentReport"].Value);

我几乎可以肯定是由这里的空值引起的:

代码语言:javascript
复制
target.ConfigureHarvester((System.Configuration.Configuration)null);

上面一行中的System.Configuration是本商店中常用的一种方法,但通常用于以下方法:

代码语言:javascript
复制
public void ConfigureHarvester(System.Configuration.Configuration configuration)
{
    context = new PlannedOutageFactorDataContext();            
}

所以我的reportid字段显然是在寻找空值以外的值,问题是我不知道它到底在寻找什么。我已经阅读了System.Configuration的MSDN,但它真的没有帮助。如果有人能给我指出正确的方向,我将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-10 04:10:02

它希望您将您的web.config或app.config值的副本传递给它,以便它可以从中提取所需的信息(保存在AppSettings部分)

例如

代码语言:javascript
复制
<configuration>
    <appSettings>
        <add key="IncidentReport" value="1" />
    </appSettings> 
</configuration>

如果你测试一个网页,很多时候你需要设置set服务的位置,这样它就可以从你的网站上抓取一份web.config的副本。

如果您正在开发控制台/桌面应用程序,请确保您有一个app.config文件

或者,您也可以使用

代码语言:javascript
复制
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(exePath);
票数 3
EN

Stack Overflow用户

发布于 2012-07-10 04:15:35

在您的测试程序集中,您需要有一个app.config文件。在这个文件中,您需要一个名为‘IncidentReport’的键和一个整数值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11402282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档