我最近升级到 Vista x64,突然间,我的 machine.config appSettings 块没有被任何 .NET 程序集读取。
在 configSections 之后和 C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config 中的 configProtectedData 之前,我有:
<appSettings>
<add key="foo" value="blah"/>
</appSettings>
<system.runtime.remoting>
<customErrors mode="Off"/>
</system.runtime.remoting>
必须通过以管理员身份运行 Notepad++ 来保存它,否则它会被锁定,这可能是有充分理由的。在 SnippetCompiler 或 VS .NET 2008 中运行以下代码:
foreach(var s in ConfigurationManager.AppSettings.AllKeys)
{
Console.WriteLine(s);
}
AppSettingsReader asr = new AppSettingsReader();
Console.WriteLine(asr.GetValue("foo", typeof(string)));
不写出任何键并失败,但出现以下异常:
---
The following error occurred while executing the snippet:
System.InvalidOperationException: The key 'foo' does not exist in the appSettings configuration section.
at System.Configuration.AppSettingsReader.GetValue(String key, Type type)
at MyClass.RunSnippet()
at MyClass.Main()
---
我编写的应用程序使用 machine.config 作为后备,如果在 app.config 中找不到用户应该在哪个环境中运行,所以我想避免重写我的应用程序来弄清楚应该像在 2000 和 XP 中一样工作。