Системе конфигурации не удалось инициализироваться

205

Я новичок в Visual Studio. В настоящее время я создаю форму для входа.

У меня есть этот код.

string connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
try
{
    using (OdbcConnection connect = new OdbcConnection(connectionString))
    {
        connect.Open();
        OdbcCommand cmd = new OdbcCommand("SELECT username, password FROM receptionist", connect);
        OdbcDataReader reader = cmd.ExecuteReader();

        if (username_login.Text == username && password_login.Text == password)
        {
            this.Hide();
            MessageBox.Show("Invalid User", "Login Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            this.Close();
        }
        else 
            MessageBox.Show("Invalid User", "Login Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        connect.Close();
    }
}
catch (OdbcException ex)
{
    MessageBox.Show(ex.Message, "error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

Но всякий раз, когда я пытаюсь ввести имя пользователя и пароль, появляется ошибка с именем Не удалось инициализировать систему конфигурации. Мне просто интересно, что это за проблема и как я могу это решить?

Пожалуйста, помогите.

  • 1
    Просто еще один сценарий. Если вы ищете ConfigurationManager.Appsettings [""], убедитесь, что в конфигурации присутствует <appSettings>. В противном случае вы получите это исключение
Показать ещё 1 комментарий
Теги:
visual-studio
login
visual-studio-2010

20 ответов

340
Лучший ответ

Убедитесь, что ваш файл конфигурации (web.config if web или app.config, если окна) в вашем проекте начинаются с:

<?xml version="1.0"?>
<configuration>
    <configSections>
        <sectionGroup name="applicationSettings" 
                      type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >

            <section name="YourProjectName.Properties.Settings" 
                     type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
                     requirePermission="false" />

        </sectionGroup>
    </configSections>
</configuration>

Обратите внимание, что внутри элемента configuration первый дочерний элемент должен быть элементом configSections.

В свойстве name в элементе section убедитесь, что вы заменили YourProjectName на свое фактическое название проекта.

Случилось со мной, что я создал веб-сервис в проекте библиотеки классов, затем я скопировал (переписал) файл конфигурации (чтобы привести конфигурацию конечных точек) в мое приложение Windows, и у меня возникла такая же проблема. Я случайно удалил configSections.

это сработало для меня, надеюсь, что это поможет

  • 77
    «внутри элемента« конфигурации »первый дочерний элемент должен быть элементом« configSections »» << для меня это было решающим моментом. Благодарю.
  • 6
    Просто еще один сценарий. Если вы ищете ConfigurationManager.Appsettings [""], убедитесь, что в конфигурации присутствует <appSettings>. В противном случае вы получите это исключение
Показать ещё 7 комментариев
89

Удалите старые файлы конфигурации из c:\Users\username\AppData\Local\appname и c:\Users\username\AppData\Roaming\appname, а затем попробуйте для перезапуска приложения.

  • 5
    Это действительно сработало для меня, спасибо за совет!
  • 2
    Спасибо, работает. Но я до сих пор не понимаю, в чем проблема?
Показать ещё 9 комментариев
17

Иногда возникает ошибка, потому что окна создают дубликат в

C:\Users\App Data\Local\ "You App Name"...

Просто удалите эту папку и выполните ее. попробуйте.

  • 2
    БЛАГОДАРЮ ВАС. Я не смог исправить мою проблему со строками файла настроек, которые не были "подхвачены" моим приложением. Я вычистил файлы конфигурации, заново сгенерировал файл .suo, удалил все существующие файлы .settings и все еще не мог загрузиться из какого-либо нового файла настроек, но не получил никаких ошибок при сборке. Этот кошмар наконец подошел к концу.
  • 1
    РАБОТАЕТ !!!!!!!!!
11

Если вы добавили свои собственные разделы конфигурации в свой App.Config, убедитесь, что вы определили раздел в элементе <configSections>. Я добавил свой XML-конфигуратор, но забыл объявить раздел конфигурации вверху, что вызвало для меня исключение "Система конфигурации не удалось инициализировать".

  • 3
    Кроме того - если у вас есть раздел, объявленный вверху, а в названии раздела есть опечатка, вы получите эту ошибку. Если вы посмотрите на InnerException сгенерированного исключения, он скажет вам, в каком разделе возникла проблема.
6

У меня была такая же проблема с классом MSTest: Марлон Греч в своей статье говорит: "Элемент должен быть определен как первый элемент в App.config."

Итак, убедитесь, что это первый элемент внутри элемента. Сначала я поставил AppSettings.

  • 0
    ооо .. мой плохой: ты действительно сделал, но я не заметил ;-) Спасибо за разъяснения
4

Я знаю, что это уже ответили, но у меня была такая же проблема в моих модульных тестах. Я разорвал волосы - добавив раздел appSettings, а затем объявил раздел конфигурации в соответствии с ответом. Наконец выяснилось, что я уже объявил раздел appSettings дальше моего файла конфигурации. Оба раздела указали на мой внешний файл настроек "appSettings.config", но первый элемент appSettings, используя атрибут file, а другой использовал атрибут configSource. Я знаю, что речь шла о connectionStrings. Разумеется, это происходит, если элемент appSettings является элементом connectStrings, который дублируется с разными атрибутами.

Надеюсь, это может предоставить кому-то еще решение, прежде чем они пойдут по пути, который я сделал, что приводит к растрате час или два. вздох о жизни наших разработчиков. Мы тратим больше нескольких часов на отладку, чем потратили на развитие!

  • 0
    Бинго. Были appSettings и applicationSettings оба.
3

Если у вас есть параметры, ограниченные пользователем, у вас также может быть файл user.config где-то в папке [Userfolder]\AppData\Local [ProjectName].

Если впоследствии вы удалите настройки, ограниченные пользователем, user.config не будет автоматически удален, и это присутствие может вызвать одно и то же сообщение об ошибке. Удаление папки сделало трюк для меня.

2

Я начал эту проблему после удаления Oracle Client Drivers и удалил C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\machine.config!

Копирование с другого компьютера разрешило проблему.

2
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="xyz" value="123" />    
  </appSettings>
</configuration>
  • 1
    Можете ли вы дать объяснение того, что ваша точка зрения здесь?
1

Такая же проблема со мной Я решил свою проблему, удалив verion = "v3.5" из App.config.

До

 <?xml version="1.0" encoding="utf-8"?>
  <configuration>

  <startup>

 <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2"/>
 </startup>
 <supportedRuntime version="v3.5" />//Remove this
</configuration>

Решение

<?xml version="1.0" encoding="utf-8"?>
<configuration>

  <startup>

    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2"/>
  </startup>
  </configuration>

Вот как использовать версию на

Элемент Runtime поддержки MSDN

1

Ничего страшного, чтобы понять это. По какой-то причине изменение атрибута [assembly: AssemblyCompany("CompanyName")] в AssemblyInfo.cs заставило эту ошибку исчезнуть. Я ссылался на проект, который имел другое значение для атрибута [assembly: AssemblyCompany("CompanyName")]. Я понял, что оба проекта имеют одинаковое значение атрибута, и он отлично работает!

  • 0
    Это ошибка? Вряд ли можно ожидать, что название вашей компании будет соответствовать стороннему проекту, на который вы ссылаетесь.
0

Попробуйте сохранить файл .config как utf-8, если у вас есть "специальные" символы. Это было проблемой в моем случае консольного приложения.

0

Я решил проблему с помощью приведенного ниже кода

   <?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="YourProjectName.Properties.Settings"
               type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
               requirePermission="false" />

    </sectionGroup>

  </configSections>
  <appSettings>
    <add key="SPUserName" value="TestUser" />
    <add key="SPPassword" value="UserPWD" />
  </appSettings>
</configuration>
0

В моем случае в моем файле .edmx я выполнил команду "Обновить модель из базы данных". Эта команда добавила ненужную строку подключения в мой файл app.config. Я удалил эту строку подключения, и все снова было хорошо.

0

Если вы имеете дело с Azure WebJob - мне пришлось удалить следующее после обновления до последней версии 4.6.1.

  <compilation debug="true" targetFramework="4.6.1">
    <assemblies>
      <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
    </assemblies>
  </compilation>

Надеюсь, что это поможет.

0

В моем случае у меня есть два конфигурационных файла в файле app.config. После удаления одного, скрывающегося в кодовых строках, приложение работает нормально.

Итак, для кого-то есть такая же проблема, проверьте, есть ли у вас дубликаты конфигураций.

0

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

0

Это немного глупо, но для меня я исправил это, сделав последнее из исходного кода моего кода. Я думаю, что появился какой-то новый элемент конфигурации, который был добавлен кем-то другим, и мне нужно было перезаписать мои файлы конфигурации. OP показывает ошибку, которую я получил, что на самом деле не указывало мне в правильном направлении.

0

Стоит отметить, что если вы добавите такие вещи, как строки подключения, в app.config, что если вы добавляете элементы за пределами определенных разделов конфигурации, то они не будут немедленно жаловаться, но когда вы попытаетесь получить к нему доступ, может затем получить вышеуказанные ошибки.

Свернуть все основные разделы и убедиться, что нет элементов за пределами определенных. Очевидно, когда вы его заметили.

0

В моем случае единственным решением было добавить ссылку на System.Configuration в моем тестовом проекте.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню