c# - ConfigurationManager.GetSection 返回 null,我不知道为什么
问题描述
我正在尝试将我的 App.config 文件中的环境和功能部分存储到 2 个不同的名称值集合中,并且由于某种原因它返回 null..
App.config 文件:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="capabilities">
<section name="parallel" type="System.Configuration.AppSettingsSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</sectionGroup>
<sectionGroup name="environments">
<section name="chrome" type="System.Configuration.AppSettingsSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="firefox" type="System.Configuration.AppSettingsSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="edge" type="System.Configuration.AppSettingsSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</sectionGroup>
</configSections>
<appSettings>
<add key="user" value="" />
<add key="key" value="" />
<add key="server" value="hub-cloud.browserstack.com" />
</appSettings>
<capabilities>
<parallel>
<add key="build" value="Build 1.0" />
<add key="name" value="parallel_test" />
<add key="browserstack.debug" value="true" />
</parallel>
</capabilities>
<environments>
<chrome>
<add key="browser" value="Chrome" />
<add key="os_version" value="10" />
<add key="os" value="Windows" />
<add key="browser_version" value="latest" />
<add key="browserstack.local" value="true" />
<add key="browserstack.selenium_version" value="3.14.0" />
<add key="browserstack.user" value="" />
<add key="browserstack.key" value="" />
</chrome>
<firefox>
<add key="browser" value="Firefox" />
<add key="os_version" value="10" />
<add key="os" value="Windows" />
<add key="browser_version" value="latest" />
<add key="browserstack.local" value="true" />
<add key="browserstack.selenium_version" value="3.10.0" />
<add key="browserstack.user" value="" />
<add key="browserstack.key" value="" />
</firefox>
<edge>
<add key="browser" value="Edge" />
<add key="os_version" value="10" />
<add key="os" value="Windows" />
<add key="browser_version" value="latest" />
<add key="browserstack.local" value="true" />
<add key="browserstack.selenium_version" value="3.5.2" />
<add key="browserstack.user" value="" />
<add key="browserstack.key" value="" />
</edge>
</environments>
</configuration>
测试初始化类:
[OneTimeSetUp]
public void Init()
{
NameValueCollection caps = ConfigurationManager.GetSection("capabilities/" + profile) as NameValueCollection; //Returns Null
NameValueCollection settings = ConfigurationManager.GetSection("environments/" + environment) as NameValueCollection; //Returns Null
DesiredCapabilities capability = new DesiredCapabilities();
foreach (string key in caps.AllKeys) //<--System.NullReferenceException: 'Object reference not set to an instance of an object. caps was null.'
...
}
我不知道这是否可能是我的 app.config 文件所在位置的结构问题,如果这甚至很重要。所以,这是我的文件夹结构:
解决方案
推荐阅读
- wordpress - 如何在 Wordpress 中合并 2 个列表菜单
- python-3.x - 如何使用sqlite在python中用户定义的列的变量编号中输入可变数量的值?
- rest - 使用 JWT 保护用于验证客户端的 RESTful API
- webpack - 如何在项目中加载全局模块?
- prometheus - 路由匹配多个标签
- csh - 如何抑制错误消息“ls no match”?
- entity-framework - 如何在 EF Core 中使用返回值 TResult 执行存储过程
- javascript - 在 Chart.js 中显示所有标签
- javascript - 如何验证电子邮件地址是否已被提供商(Google 或 Facebook)使用?
- php - 在 PHP 正则表达式中匹配几个单词后如何获取整数或浮点值?