2011-04-12 11 views
9

Mam ten błąd w mojej aplikacji windowsowej C#: "System konfiguracji nie mógł się zainicjować".Jak naprawić błąd "Błąd konfiguracji systemu konfiguracji/Brak elementu głównego" podczas ładowania pliku konfiguracyjnego?

To działało dobrze. Nagle dostałem ten wyjątek. Pokazuje wewnętrzny szczegół wyjątku jako "Brakujący element główny". (C: \ Users \ firma \ AppData \ Local \ Clickbase_Corp_Sverige_AB \ TouchStation.vshost.exe_Url_no1nets4fg3oy2p2q2pnwgulbvczlv33 \ 1.1.0.12 \ user.config) "} Dzieje się tak, gdy próbuję uzyskać wartości z klasy Settings.cs

In.. złożyć Program.cs poniższy kod został napisany

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

i klasa wywołań settings.cs gdzie poniższy kod rzuca powyższy wyjątek

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

poniżej jest cała moja 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> 

Czy ktoś może mi w tym pomóc?

Dziękuję.

Pozdrawiam,

Jennie

+1

Proszę pokazać swój pełny app.config –

+0

Poniżej jest cała moja app.config – user703526

+0

A jaka jest zawartość C: \ Users \ firma \ AppData \ Local \ Clickbase_Corp_Sverige_AB \ TouchStation.vshost.exe_Url_no1nets4fg3oy2p2q2pnwgulbvczlv33 \ 1.1.0.12 \ user.config? –

Odpowiedz

4

Przyczyną XmlException pt elementu głównego brakuje oznacza dokument XML (plik konfiguracyjny tutaj) próbujesz załadować nie jest prawidłowo sformatowany, bardziej dokładnie, że brakuje węzeł główny.

Każdy plik XML musi zawierać element główny/węzeł, który obejmuje wszystkie pozostałe elementy.

Plik powinien wyglądać następująco:

<?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> 
+3

Może to być problem, ale '' jest _nie_ zwane węzłem głównym. Jest to instrukcja przetwarzania. '' jest katalogiem głównym. –

6

Oprócz Odpowiedź Akram Shahda: Miałem ten sam rodzaj problemu (system konfiguracji nie może zainicjować/element główny brakuje). Plik .config w folderze AppData był pusty. Problem został rozwiązany poprzez usunięcie pliku .config w folderze AppData.

1

Generalnie błąd "Niepowodzenie w inicjalizacji systemu konfiguracji" jest prawdopodobnie spowodowany nieprawidłową strukturą XML w pliku app.config. Od czasu do czasu natknąłem się na to podczas próby przeniesienia kodu z pliku konfiguracyjnego "test łóżka" do pliku app app.config.

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

W aplikacji konsoli należy przeznaczyć < startowego /> Sekcja po < configSections />

1

W moim przypadku, węzeł connectionStrings został uznany dwukrotnie.

0

Tylko w przypadku, jeśli ktoś to czyta:

dla mnie rozwiązać ten problem, po prostu się do lokalizacji user.config na to pytanie jest:

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

Usunąłem plik konfiguracyjny i ponownie visual studio i to działało.

Nadzieja to pomaga

Dzięki

0

Jeden z naszych klientów dostał ten błąd!" system konfiguracji nie powiodło się zainicjować "podczas próby FTP z projektu C# Użytkownik NIE był administratorem

Nasz klient techniczny zbadał i znalazł, używając ProcMon pod kontem administratora nt, że zasobem używanym przez ten proces był plik .NETfig .NET. (c: \ windows \ microsoft.net \ framework \ v4.0.30319 \ config \ machine.config)

Nasi klienci, którym przyznano uprawnienia lokalne, modyfikują prawa do tego pliku konfiguracyjnego i natychmiast rozwiązali problem. (Nie pozwalają użytkownikom na administrowanie, więc było to konieczne.)

Jeśli powyższa odpowiedź nie działa, może to pomoże.

0

W moim przypadku, po sprawdzeniu wszystkich, problem był w ostatniej części App.config, gdzie instrukcja konfiguracji Log4Net powoduje błąd.

Usuń wszystkie dodatkowe w App.config i rozpocznij debugowanie.

<?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>