Как исправить ошибку" система конфигурации не удалось инициализировать/корневой элемент отсутствует " при загрузке файла конфигурации?

я получил эту ошибку в моем приложении c# windows:"система конфигурации не удалось инициализировать".

Он работал хорошо. Внезапно я получил это исключение. Он показывает внутреннюю деталь исключения как "корневой элемент отсутствует". (C:UserscompanyAppDataLocalClickbase_Corp_Sverige_ABTouchStation.vshost.exe_Url_no1nets4fg3oy2p2q2pnwgulbvczlv331.1.0.12пользователь.конфигурация.}")Это происходит, когда я пытаюсь получить значения из параметров.классе по информатике.

В программе.cs-файл ниже приведен код написано

if (Properties.Settings.Default.CallUpgrade)
            {
                Properties.Settings.Default.Upgrade();
                Properties.Settings.Default.CallUpgrade = false;
                Properties.Settings.Default.Save();                
            }

и настройки вызовов.cs класс, где ниже код бросает выше exception

    [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;
        }
    }

ниже все мое приложение.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="Datalocal.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>

может кто-нибудь помочь мне в этом?

Спасибо.

С уважением,

Дженни

9 ответов


причиной XmlException отсутствует корневой элемент означает, что 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>

В дополнение к ответу Акрама Шахда: у меня была такая же проблема (конфигурация системы не удалось инициализировать / корневой элемент отсутствует). Этот.файл конфигурации в папке AppData был пуст. Проблема была решена путем удаления .файл конфигурации в папке AppData.


в консольном приложении вы должны выделить раздел после


В общем случае проблема "система конфигурации не удалось инициализировать", вероятно, вызвана недопустимой структурой XML в приложении.конфиг. Я натыкался на это время от времени при попытке перенести код из конфигурационного файла "тестовой кровати" в приложение-службу.конфигурационный файл.


в моем случае узел connectionStrings был объявлен дважды.


    var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
    con = new OleDbConnection(config.ConnectionStrings.ConnectionStrings["connectionStr"].ConnectionString.ToString());           

на всякий случай, если кто-нибудь прочитает это:

Я решил проблему, просто перейдя к пользователя.расположение конфигурации, для этого вопроса это:

(C:\Users\company\AppData\Local\Clickbase_Corp_Sverige_AB\TouchStation - ... vshost.exe_Url_no1nets4fg3oy2p2q2pnwgulbvczlv33\1.1.0.12\пользователь.config)"

Я удалил файл конфигурации и перезапустил visual studio, и он работал.

надеюсь, что это помогает!

спасибо


один из наших клиентов получил эту ошибку "не удалось Инициализировать систему конфигурации" при попытке FTP из проекта c#. Пользователь не был администратором.

наш технический клиент исследовал и обнаружил, используя ProcMon под учетной записью без администратора, что ресурс, используемый этим процессом, был машиной .NET.конфигурационный файл. (c:\windows\microsoft.net\framework\v4.0.30319\config\machine.config)

наш клиент предоставил локальным пользователям права на изменение только этого файла конфигурации, и это сразу решило проблему. (Они не позволяют пользователям быть администраторами, поэтому это было необходимо.)

поэтому, если приведенный выше ответ не работает для вас, возможно, это поможет.


в моем случае, после проверки все, проблема была в последней части приложения.config, где оператор конфигурации Log4Net создает ошибку.

удалить все дополнительные приложения.настройте и начните отлаживать.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <configSections>
      <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
        <section name="[Application Name].Settings.Client" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
      </sectionGroup>    
    </configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
  <applicationSettings>
  <[Application Name].Settings.Client>
    <setting name="IDClient" serializeAs="String">
    <value>6</value>
    </setting>
  </[Application Name].Settings.Client>
</applicationSettings>
</configuration>