2012-05-22 23 views
2

Я пишу небольшую программу в Visual Studio 2010 на C#, используя 2.0 .Net framework. Я пытаюсь прочитать значения из файла 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 должен быть первым в файле, но я сделал это и все еще получаю ошибку.

+1

Что такое innerexception? – Tilak

+0

Также, пожалуйста, напишите код доступа к настройкам. –

+0

Внутреннее исключение: «Нераспознанное приложение раздела конфигурацииНастройки/добавление». – user1409400

ответ

0

Я мог бы быть в стороне от этого, вам следует избегать обратной косой черты. I.e. C:\Program Files\MyApp\bin\ будет C:\\Program Files\\MyApp\\bin\\

+0

Я так не считаю - не в конфигурационном файле. –

+0

Не совсем уверен в этом либо tbh –

+0

Просто попробовав его, вам не нужно их избегать. –

0

Возможно, файл конфигурации поврежден и не читается. Удалите существующий файл .Config и создайте новое с тем же именем и настройками.

используя такой же практика я разрешение такой же проблема много раз.

  <add key="Path" value ="C:\\Program Files\\MyApp\bin\\" /> 

Если вы хотите использовать несколько путь в ваш код, то используйте Combine Path

+1

Обратные косые черты не обязательно должны быть удвоены в файле конфигурации - и я, конечно же, не буду * просто рутинно удалять и воссоздавать файл конфигурации. Сначала я попытался бы понять, что не так, обратив внимание на исключение. –

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

Положите <configSections> перед тем <appSettings> и он должен работать

<configuration> 
<configSections> 
... 
</configSections> 
<appSettings> 
... 
</appSettings> 
</configurations> 
+1

Это решило мою проблему. Благодарю. Какой плохой код! –

+0

Посмотрите на пример, это уже так. – hogarth45

0

Пожалуйста, проверьте ниже изображения ... Вам нужно добавить ключ в теге.

enter image description here

0

Я знаю, что это очень поздно дополнение, но просто подумал, что если это поможет кому-то еще, почему нет. Когда речь заходит об использовании «applicationSettings» Обратите внимание, что вы не можете, как сегодня вы можете не смешивать «настройки» из «applicationSettings» и «добавить» из «AppSettings», другими словами, вы не можете иметь

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

и

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

в том же файле App.config.