配置系统初始化失败。

3

我正在使用C# Visual Studio 2010编写一个小程序,使用2.0 .Net框架。我尝试从App.config文件中读取值。我的配置文件如下...

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
      <section name="MyApp.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    </sectionGroup> 
  </configSections>
  <applicationSettings>
    <add key="Path" value ="C:\Program Files\MyApp\bin\" />
    <add key="UserName" value="UserName" />
    <add key="Pword" value="Password" />
  </applicationSettings>
</configuration>

那么在我的代码中:

path = ConfigurationManager.AppSettings["Path"];

我遇到了一个运行时错误 "配置系统初始化失败"。 根据我的阅读,configSection必须位于文件的开头,但即使我已经这样做了,仍然会出现错误。


请提供访问设置的代码。 - Jon Skeet
内部异常为:"未识别的配置节 applicationSettings/add。" - user1409400
6个回答

9
<configSections>放在<appSettings>之前,应该就可以正常工作了。
<configuration>
<configSections>
...
</configSections>
<appSettings>
...
</appSettings>
</configurations>

1
我已经解决了,标签applicationSettings应该被称为appSettings。然后我可以摆脱sectionGroup标签,只留下这个。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
  </configSections>
  <appSettings>
    <add key="Path" value="C:\Program Files\MyApp\bin\" />
    <add key="UserName" value="username" />
    <add key="Pword" value="password" />
  </appSettings>
</configuration>

0
请查看下面的图片... 您需要将您的密钥添加到标签中。

enter image description here


0

我知道这可能是一个很晚的补充,但如果能帮助其他人,为什么不呢。关于使用“applicationSettings”,请注意,目前您不能混合使用“applicationSettings”的“settings”和“appSettings”的“add”,换句话说,您不能同时拥有以下内容:

<setting name="Name You choose" serializeAs="String">
        <value>True</value>
      </setting>

<add key="Name You choose" value="1000" />

在同一个 App.config 文件中。


0

我可能完全错了,但你应该转义反斜杠。 例如:C:\Program Files\MyApp\bin\ 应该变成 C:\\Program Files\\MyApp\\bin\\


我不这么认为 - 配置文件中没有这样的设置。 - Jon Skeet
实话实说,我也不是完全确定。 - M Afifi

0
可能是配置文件损坏且无法读取。删除现有的 .Config 文件,然后创建一个具有相同名称和设置的新文件。
使用相同的方法,我已经解决过同样的问题多次。
         <add key="Path" value ="C:\\Program Files\\MyApp\bin\\" />

如果您想在代码中使用多个路径,则可以使用Combine Path

1
在配置文件中,反斜杠不需要加倍 - 我肯定不会仅仅例行删除和重新创建配置文件。我会先尝试找出问题所在,注意异常情况。 - Jon Skeet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接