首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Vista中未从machine.config读取appSettings

在Vista中未从machine.config读取appSettings
EN

Stack Overflow用户
提问于 2009-08-03 15:14:18
回答 1查看 3.5K关注 0票数 6

我最近升级到了Vista x64,突然间,我的machine.config appSettings块不再被任何.NET程序集读取。

在C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config,中,在configSections之后和configProtectedData之前,我有:

代码语言:javascript
运行
复制
<appSettings>
    <add key="foo" value="blah"/>
</appSettings>
<system.runtime.remoting>
    <customErrors mode="Off"/>
</system.runtime.remoting>

我不得不以管理员身份运行Notepad++来保存它,因为它被锁定了,这可能是有充分的理由的。在SnippetCompiler或VS .NET 2008中运行以下代码:

代码语言:javascript
运行
复制
    foreach(var s in ConfigurationManager.AppSettings.AllKeys)
    {
        Console.WriteLine(s);   
    }

    AppSettingsReader asr = new AppSettingsReader();

    Console.WriteLine(asr.GetValue("foo", typeof(string)));

不写出密钥并失败,并出现以下异常:

代码语言:javascript
运行
复制
---
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相同的工作方式。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-08-03 15:46:59

用下面这行代码解决了这个问题:

代码语言:javascript
运行
复制
ConfigurationManager.OpenMachineConfiguration().FilePath

返回:

代码语言:javascript
运行
复制
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Config\machine.config

而不是:

代码语言:javascript
运行
复制
C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config

忘记我现在使用的是64位。在正确的配置文件中添加appSettings部分解决了这个问题。

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

https://stackoverflow.com/questions/1222909

复制
相关文章

相似问题

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