如何修复加载配置文件时"配置系统初始化失败/ Root元素丢失"错误?

use*_*526 10 c# config

我在c#windows应用程序中遇到此错误:"配置系统无法初始化".

它工作正常.突然间我得到了这个例外.它显示内部异常细节为"缺少根元素".(C:\ Users\company\AppData\Local\Clickbase_Corp_Sverige_AB\TouchStation.vshost.exe_Url_no1nets4fg3oy2p2q2pnwgulbvczlv33\1.1.0.12\user.config)"}.当我尝试从Settings.cs类中获取值时会发生这种情况.

在program.cs文件中,编写了以下代码

if (Properties.Settings.Default.CallUpgrade)
            {
                Properties.Settings.Default.Upgrade();
                Properties.Settings.Default.CallUpgrade = false;
                Properties.Settings.Default.Save();                
            }
Run Code Online (Sandbox Code Playgroud)

并调用settings.cs类,其中下面的代码抛出异常

    [global::System.Configuration.UserScopedSettingAttribute()]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [global::System.Configuration.DefaultSettingValueAttribute("True")]

    public bool CallUpgrade {
        get {
            return ((bool)(this["CallUpgrade"]));
        }
        set {
            this["CallUpgrade"] = value;
        }
    }
Run Code Online (Sandbox Code Playgroud)

以下是我的整个app.config

<configuration>
  <configSections>
    <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
      <section name="TouchStation.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
      <section name="TouchStation.TouchStation" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
    </sectionGroup>
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
      <section name="TouchStation.TouchStation" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    </sectionGroup>
    <section name="SitesInfo" type="TouchServer.SitesInfoSectionHandler,TouchServerLib" />
  </configSections>
  <appSettings>
    <add key="WebRoot" value="webroot" />
    <add key="TempDir" value="temp" />
    <add key="ServerPort" value="9338" />
    <add key="ClientSettingsProvider.ServiceUri" value="" />
  </appSettings>
  <userSettings>
    <TouchStation.Properties.Settings>
      <setting name="Site" serializeAs="String">
        <value />
      </setting>
      <setting name="StationID" serializeAs="String">
        <value>0</value>
      </setting>
      <setting name="Location" serializeAs="String">
        <value />
      </setting>
      <setting name="ShutdownTime" serializeAs="String">
        <value>0000</value>
      </setting>
      <setting name="ReportStatusEvery" serializeAs="String">
        <value>0</value>
      </setting>
      <setting name="SynchronizeEvery" serializeAs="String">
        <value>10</value>
      </setting>
      <setting name="DefaultUsername" serializeAs="String">
        <value />
      </setting>
      <setting name="DefaultPassword" serializeAs="String">
        <value />
      </setting>
      <setting name="WatchdogTimeout" serializeAs="String">
        <value>60</value>
      </setting>
      <setting name="RebootOnTimeout" serializeAs="String">
        <value>False</value>
      </setting>
      <setting name="AnonymousLogin" serializeAs="String">
        <value>True</value>
      </setting>
      <setting name="RefID" serializeAs="String">
        <value />
      </setting>
      <setting name="AutoStart" serializeAs="String">
        <value>False</value>
      </setting>
      <setting name="DemoMode" serializeAs="String">
        <value>True</value>
      </setting>
      <setting name="UnlockPassword" serializeAs="String">
        <value>needle</value>
      </setting>
      <setting name="SynchronizerUsername" serializeAs="String">
        <value />
      </setting>
      <setting name="SynchronizerPassword" serializeAs="String">
        <value />
      </setting>
      <setting name="RunClientApplications" serializeAs="String">
        <value>False</value>
      </setting>
      <setting name="MapID" serializeAs="String">
        <value>0</value>
      </setting>
      <setting name="ServerName" serializeAs="String">
        <value />
      </setting>
      <setting name="CallUpgrade" serializeAs="String">
        <value>True</value>
      </setting>
      <setting name="ServerPort" serializeAs="String">
        <value>9338</value>
      </setting>
    </TouchStation.Properties.Settings>
    <TouchStation.TouchStation>
      <setting name="ServerURL" serializeAs="String">
        <value />
      </setting>
      <setting name="Site" serializeAs="String">
        <value />
      </setting>
      <setting name="StationID" serializeAs="String">
        <value>0</value>
      </setting>
      <setting name="Location" serializeAs="String">
        <value />
      </setting>
      <setting name="ShutdownTime" serializeAs="String">
        <value />
      </setting>
      <setting name="ReportStatusEvery" serializeAs="String">
        <value>0</value>
      </setting>
      <setting name="SynchronizeEvery" serializeAs="String">
        <value>0</value>
      </setting>
      <setting name="HideMouse" serializeAs="String">
        <value>False</value>
      </setting>
      <setting name="HideDesktopOnStart" serializeAs="String">
        <value>False</value>
      </setting>
      <setting name="DefaultUsername" serializeAs="String">
        <value />
      </setting>
      <setting name="DefaultPassword" serializeAs="String">
        <value />
      </setting>
      <setting name="LogServerPort" serializeAs="String">
        <value>9050</value>
      </setting>
      <setting name="WatchdogTimeout" serializeAs="String">
        <value>60</value>
      </setting>
      <setting name="RebootOnTimeout" serializeAs="String">
        <value>False</value>
      </setting>
      <setting name="AnonymousLogin" serializeAs="String">
        <value>True</value>
      </setting>
      <setting name="RefID" serializeAs="String">
        <value />
      </setting>
    </TouchStation.TouchStation>
  </userSettings>
  <applicationSettings>
    <TouchStation.TouchStation>
      <setting name="ClientSettingsURL" serializeAs="String">
        <value />
      </setting>
    </TouchStation.TouchStation>
  </applicationSettings>
  <SitesInfo>
    <sites>
      <site Name="Local" FullName="Local Site" DatabaseConnectionString="Data\local.db" />
    </sites>
  </SitesInfo>
  <system.web>
    <membership defaultProvider="ClientAuthenticationMembershipProvider">
      <providers>
        <add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
      </providers>
    </membership>
    <roleManager defaultProvider="ClientRoleProvider" enabled="true">
      <providers>
        <add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
      </providers>
    </roleManager>
  </system.web>
</configuration>
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助我吗?

谢谢.

问候,

珍妮

小智 7

除了Akram Shahda的回答:我遇到了同样的问题(配置系统初始化失败/ root元素丢失).AppData文件夹中的.config文件为空.通过删除AppData文件夹中的.config文件解决了该问题.


Add*_*dds 6

以防万一有人读到这个:

对我来说,我只需转到 user.config 位置即可解决问题,对于这个问题,它是:

(C:\Users\company\AppData\Local\Clickbase_Corp_Sverige_AB\TouchStation.vshost.exe_Url_no1nets4fg3oy2p2q2pnwgulbvczlv33\1.1.0.12\user.config)"

我删除了配置文件并重新启动了 Visual Studio,它起作用了。

希望这可以帮助!

谢谢


Akr*_*hda 5

XmlException缺少标题Root元素的原因意味着您尝试加载的XML文档(此处的配置文件)的格式不正确,更确切地说,它缺少根节点。

每个XML文件必须具有一个根元素/节点,该根元素/节点将所有其他元素都包含在内。

您的文件必须如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <sectionGroup name="userSettings" 
            type="System.Configuration.UserSettingsGroup, System,
            Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
        </sectionGroup>
    </configSections>
    <userSettings>
        <WindowsFormsApplication.Properties.Settings>
        </WindowsFormsApplication.Properties.Settings>
    </userSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)

  • 可能是问题所在,但是`&lt;?xml ...?&gt;`不被称为根节点。这是一条处理指令。“ &lt;configuration&gt;”是根。 (3认同)