C#WPF ConfigurationManager.AppSettings 仅包含 4 个条目
C#WPF ConfigurationManager.AppSettings Only Containing 4 Entries
我有一个 app.config 文件,它是按照以下内容构建的:-
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="key1" value="value1" />
<add key="key2" value="value2" />
<add key="key3" value="value3" />
<add key="key4" value="value4" />
.....
</appSettings>
</configuration>
此配置包含 12 个不同键的条目,但是当我调试我的代码时,我发现 ConfigurationManager.AppConfig 只包含前 4 个键。我已经尝试在调用它之前使用代码刷新该部分,但仍然只包含 4 个键(前 4 个是我们开发时在应用程序中构建的)并且不会显示在键 4 之后添加的任何内容。
知道我做错了什么吗?
编辑
抱歉缺少细节,实际的 app.config 文件看起来像 :-
?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="Lic" value="123456" />
<add key="API" value="https://example.com/api/" />
<add key="User" value="User" />
<add key="Config" value="Config"/>
<add key="ConN0" value="ConN Value 0, additional details here" />
<add key="ConN1" value="ConN Value 1, additional details here" />
<add key="ConN2" value="ConN Value 2, additional details here" />
<add key="ConN3" value="ConN Value 3, additional details here" />
<add key="ConN4" value="ConN Value 4, additional details here" />
<add key="ConN5" value="ConN Value 5, additional details here" />
<add key="ConN6" value="ConN Value 6, additional details here" />
<add key="ConN7" value="ConN Value 7, additional details here" />
</appSettings>
</configuration>
我尝试运行的代码如下:
List<string> values = new List<string>();
foreach (string key in ConfigurationManager.AppSettings)
{
if (key.StartsWith("ConN"))
{
string value = ConfigurationManager.AppSettings[key];
values.Add(value);
}
}
代码总是生成一个空列表,并且在单步执行 ConfigurationManager.AppSettings 时总是只有 4 个条目用于 Lic、API、用户和配置。我们已经将问题的位置缩小到上面的代码,因为代码的下一步是在数据网格中显示键值,但即使在完整构建中它也总是空的。我们检查了构建中的 .config 文件,其中包含正确的条目。
我不确定应该在哪里寻找调试的配置,因为我找不到任何引用 app.config 文件位置的地方。我在机器上搜索了其他 app.config 文件,我能找到的与该项目唯一相关的文件是其中包含完整配置的文件。
如果有人能可怜我并为我指明正确的方向,我将永远感激不已?
我还没有真正找出为什么我在 ConfigurationManager.AppSettings 中只能看到 4 个条目,但我已经解决了这个问题。
我使用 :
将配置值移动到 app.config 中它们自己的部分
<configSections>
<section name="MyConfig" type="System.Configuration.AppSettingsSection" />
</configSections>
然后更改代码中的所有引用以打开一个新的 AppSettingsSection,如下所示:
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
AppSettingsSection appSettingSection = (AppSettingsSection)config.GetSection("MyConfig");
通过执行此操作然后引用 appSettingSection 而不是 ApplicationManager.AppSettings 键和值可用且有效。
我有一个 app.config 文件,它是按照以下内容构建的:-
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="key1" value="value1" />
<add key="key2" value="value2" />
<add key="key3" value="value3" />
<add key="key4" value="value4" />
.....
</appSettings>
</configuration>
此配置包含 12 个不同键的条目,但是当我调试我的代码时,我发现 ConfigurationManager.AppConfig 只包含前 4 个键。我已经尝试在调用它之前使用代码刷新该部分,但仍然只包含 4 个键(前 4 个是我们开发时在应用程序中构建的)并且不会显示在键 4 之后添加的任何内容。
知道我做错了什么吗?
编辑
抱歉缺少细节,实际的 app.config 文件看起来像 :-
?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="Lic" value="123456" />
<add key="API" value="https://example.com/api/" />
<add key="User" value="User" />
<add key="Config" value="Config"/>
<add key="ConN0" value="ConN Value 0, additional details here" />
<add key="ConN1" value="ConN Value 1, additional details here" />
<add key="ConN2" value="ConN Value 2, additional details here" />
<add key="ConN3" value="ConN Value 3, additional details here" />
<add key="ConN4" value="ConN Value 4, additional details here" />
<add key="ConN5" value="ConN Value 5, additional details here" />
<add key="ConN6" value="ConN Value 6, additional details here" />
<add key="ConN7" value="ConN Value 7, additional details here" />
</appSettings>
</configuration>
我尝试运行的代码如下:
List<string> values = new List<string>();
foreach (string key in ConfigurationManager.AppSettings)
{
if (key.StartsWith("ConN"))
{
string value = ConfigurationManager.AppSettings[key];
values.Add(value);
}
}
代码总是生成一个空列表,并且在单步执行 ConfigurationManager.AppSettings 时总是只有 4 个条目用于 Lic、API、用户和配置。我们已经将问题的位置缩小到上面的代码,因为代码的下一步是在数据网格中显示键值,但即使在完整构建中它也总是空的。我们检查了构建中的 .config 文件,其中包含正确的条目。
我不确定应该在哪里寻找调试的配置,因为我找不到任何引用 app.config 文件位置的地方。我在机器上搜索了其他 app.config 文件,我能找到的与该项目唯一相关的文件是其中包含完整配置的文件。
如果有人能可怜我并为我指明正确的方向,我将永远感激不已?
我还没有真正找出为什么我在 ConfigurationManager.AppSettings 中只能看到 4 个条目,但我已经解决了这个问题。
我使用 :
将配置值移动到 app.config 中它们自己的部分<configSections>
<section name="MyConfig" type="System.Configuration.AppSettingsSection" />
</configSections>
然后更改代码中的所有引用以打开一个新的 AppSettingsSection,如下所示:
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
AppSettingsSection appSettingSection = (AppSettingsSection)config.GetSection("MyConfig");
通过执行此操作然后引用 appSettingSection 而不是 ApplicationManager.AppSettings 键和值可用且有效。