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

225

Я новичок в 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);
}

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

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

Sean
источник
2
Еще один сценарий. Если вы ищете ConfigurationManager.Appsettings [""], убедитесь, что в конфигурации присутствует <appSettings>. В противном случае вы получите это исключение
LCJ
1
Это также может произойти, если у вас есть 2 места для appsettings
Лоуренс Турман

Ответы:

392

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

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

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

feluco79
источник
79
«внутри элемента конфигурации первый дочерний элемент должен быть элементом configSections», это было для меня решающим моментом. Спасибо.
demoncodemonkey
7
Еще один сценарий. Если вы ищете ConfigurationManager.Appsettings [""], убедитесь, что в конфигурации присутствует <appSettings>. В противном случае вы получите это исключение
LCJ
6
Это исправило мою проблему, когда configSectionsэлемент существовал, но находился позже в app.config. Я не могу не спросить, почему произошла эта ошибка. Я думал, что элементы XML не нужно заказывать.
Тэ Сон Шин
3
Это верно. ConfigSections должен быть первым дочерним узлом элемента конфигурации.
Уманг Десаи
7
То, как Microsoft реализовала этот app.config, задерживается !!! Наименьшее, что они могли сделать, это выдать лучшее сообщение об ошибке!
codenamezero
105

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

Ярек
источник
2
Спасибо, работает. Но я до сих пор не понимаю, в чем проблема?
жидкость
1
в локальной папке файл user.config был пустым. После удаления локальной папки приложение начинает работать
Ozgur
3
Спасибо, это сработало. Но в чем может быть причина этой ошибки.
vasuy19
1
Мой файл был заполнен низкими значениями (0x00). Я скопировал рабочий, и тогда все было хорошо
DanW
1
Мой файл конфигурации в этом месте был поврежден во время сбоя питания - файл конфигурации, который обычно представляет собой XML, был заполнен байтами NUL
mroselli
19

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

C: \ Users \ Данные приложения \ Local \ "Имя вашего приложения" ...

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

Ашу Гупта
источник
2
СПАСИБО. Я не смог исправить мою проблему со строками файла настроек, которые не были "подхвачены" моим приложением. Я вычистил файлы конфигурации, заново сгенерировал файл .suo, удалил все существующие файлы .settings и все еще не мог загрузить ни один новый файл настроек, но не получил никаких ошибок при сборке. Этот кошмар наконец подошел к концу.
Рэйчел
13

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

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

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

Поэтому убедитесь, что это первый элемент внутри элемента. Я поставил AppSettings первым.

Унифицированные
источник
ооо ... мой плохой: ты действительно сделал, но я не заметил ;-) Спасибо за разъяснение
kleopatra
4

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

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

csharpforevermore
источник
Бинго. Было appSettingsи то и applicationSettingsдругое.
SushiGuy
3

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

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

Джереми Томпсон
источник
3
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="xyz" value="123" />    
  </appSettings>
</configuration>
Ленин Эдвин
источник
3

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

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

Wuolennaj
источник
1

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

Тоно Нам
источник
Это ошибка? Вряд ли можно ожидать, что название вашей компании будет соответствовать стороннему проекту, на который вы ссылаетесь.
Дениз Скидмор
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>

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

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


источник
1

После долгого поиска я понял, что это исключение имеет внутреннее исключение, которое говорит вам точно, что не так с вашим конфигурационным файлом

Джерри Преториус
источник
1
Я пытался комментировать и раскомментировать различные разделы моего app.config, а в исключении даже не смотрел на внутреннее исключение. И увидев этот ответ, я обнаружил, в чем была проблема. Спасибо.
Сид
1

Простое решение для проектов .Net Core WinForms / WPF / .Net Standard Class Library

шаг 1: установка с System.Configuration.ConfigurationManagerпомощью Nuget Manager

шаг 2: добавление нового App.Configфайла

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="Bodrum" value="Yalikavak" />    
  </appSettings>
</configuration>

Шаг 3: Получить значение

string value = ConfigurationManager.AppSettings.Get("Bodrum");
// value is Yalikavak

Если вы вызываете его из, Class Libraryдобавьте App.Configфайл в ваш основной проект.

fatihyildizhan
источник
0

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

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

Энтони Хорн
источник
0

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

Хосе Сантос
источник
0

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

DLeh
источник
0

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

Приябрата бисвал
источник
0

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

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

oopsdazie
источник
0

Если вы имеете дело с веб-заданием Azure - мне пришлось удалить следующее после обновления до последней версии 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

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

Colin
источник
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

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

lukalev
источник
0

Так как упомянул @Flash Gordon в своем комментарии, вам нужно определить любой пользовательский тег (как раздел) вфайле App.config , в разделе<configSections>. Например, вы работаете над проектом автоматизации тестирования с SpecFlow и добавлением<specFlow>тега, тогдасамаяпростая версия App.config будет выглядеть так: введите описание изображения здесь

DenisD
источник
0

Я просто имел это, и это было, потому что у меня был <configuration>элемент, вложенный в <configuration>элемент.

Майк Чил
источник
0

Я перезапустил Visual Studio и даже весь компьютер. Я очистил проект, перестроил и удалил файл bin.

Ничего не помогало, пока я не изменил конфигурацию с x64 на x86. Он работал на x86, но когда я изменил его обратно, он также работал!

Ali123
источник
0

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

У меня было 2 ссылки на одну и ту же сборку примерно так:

дубликат ссылки

файл проекта до и после

Удаление (дубликат) ссылки в желтом исправило это для меня.

Я надеюсь, что это работает для кого-то еще, это на какое-то время сводило меня с ума.

ElMatador
источник
0

Если у вас есть пользовательский раздел, вы должны упомянуть, что под configSections прямо под тегом конфигурации.

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

если у вас есть какая-либо синтаксическая ошибка в machine.config, то эта ошибка также ожидается.

экстрактор
источник