구성 시스템을 초기화하지 못했습니다


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

그러나 사용자 이름과 암호를 입력하려고 할 때마다 구성 시스템을 초기화하지 못했습니다 라는 오류 가 있습니다 . 나는 이것이 어떤 종류의 문제인지 궁금하고 어떻게 해결할 수 있습니까?

도와주세요.



2
또 다른 시나리오-ConfigurationManager.Appsettings [ ""]를 찾는 경우 구성에 <appSettings>가 있는지 확인하십시오. 그렇지 않으면이 예외가 발생합니다
LCJ

1
당신이 appSettings는 2 개 위치에있는 경우에도 발생할 수 있습니다
로렌스 서먼을

답변:


392

프로젝트의 구성 파일 (web 인 경우 web.config 또는 windows 인 경우 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 .

그것은 나를 위해 일했다, 그것이 도움이되기를 바랍니다


79
" 'configuration'요소 내에서 첫 번째 자식은 'configSections'요소 여야합니다."<< 이것이 중요한 포인트였습니다. 감사.
demoncodemonkey

7
또 다른 시나리오-ConfigurationManager.Appsettings [ ""]를 찾는 경우 구성에 <appSettings>가 있는지 확인하십시오. 그렇지 않으면이 예외가 발생합니다
LCJ

6
configSections요소가 존재했지만 나중에 app.config의 일부에있는 문제를 해결했습니다 . 이 오류가 발생한 이유를 물어볼 수 없습니다. XML 요소를 주문할 필요가 없다고 생각했습니다.
태 성 신

3
맞습니다. configSections는 구성 요소 아래의 첫 번째 하위 노드 여야합니다.
Umang Desai

7
Microsoft가이 app.config를 구현 한 방식이 지연되었습니다 !!! 그들이 할 수있는 최소한의 것은 더 나은 오류 메시지를 던지는 것입니다!
codenamezero

105

c : \ Users \ username \ AppData \ Local \ appname 에서 이전 구성 파일을 삭제하십시오 .c : \ Users \ username \ AppData \ Roaming \ appname 한 다음 응용 프로그램을 다시 시작하십시오.


2
고마워요 그러나 여전히 문제가 무엇인지 이해하지 못합니까?
liquide

1
로컬 폴더 user.config 파일에서 비어있었습니다. 로컬 폴더 앱 삭제 후 작동 시작
Ozgur

3
고맙습니다. 그러나이 오류의 원인은 무엇입니까?
vasuy19

1
내 파일이 낮은 값 (0x00)으로 채워졌습니다. 나는 하나를 복사 한 다음 괜찮
았습니다

1
일반적으로 NUL으로 채워졌다 XML입니다 바이트 설정 파일 -이 위치에 내 설정 파일은 정전 이벤트 기간 동안 손상되었습니다
mroselli

19

때때로 Windows에서 창을 복제하여 오류가 발생합니다.

C : \ Users \ App Data \ Local \ "사용자 이름"...

이 폴더를 삭제하고 완료하십시오. 시도 해봐.


2
감사합니다. 응용 프로그램에서 설정 파일 문자열이 "선택"되지 않는 문제를 해결할 수 없습니다. 구성 파일을 정리하고 .suo 파일을 다시 생성했으며 기존의 모든 .settings 파일을 삭제했지만 새 설정 파일에서 여전히로드 할 수 없었지만 빌드시 오류가 발생하지 않았습니다. 이 악몽은 마침내 끝났다.
Rachael

13

에 사용자 정의 구성 섹션을 추가 한 경우 요소 App.Config에서 섹션을 정의했는지 확인하십시오 <configSections>. 구성 XML을 추가했지만 구성 섹션을 맨 위에 선언하지 않았습니다. "구성 시스템을 초기화하지 못했습니다"라는 예외가 발생했습니다.


3
또한-상단에 섹션이 선언되어 있고 아래 섹션의 이름에 오타가있는 경우이 오류가 발생합니다. throw 된 예외의 InnerException을 보면 문제가있는 섹션을 알려줍니다.
shindigo

6

MSTest 클래스에서도 이와 동일한 문제가 발생 했습니다. 그의 기사에서 Marlon Grech 는 "요소는 App.config의 첫 번째 요소로 정의되어야합니다"라고 말합니다.

요소 아래의 첫 번째 요소인지 확인하십시오. AppSettings를 먼저 넣었습니다.


아 .. 내 나쁜 : 당신은 실제로 않았다 그러나 나는 눈치 채지 않았다 ;-) 설명을 주셔서 감사합니다
kleopatra

4

나는 이것이 이미 답변되었지만 단위 테스트에서 정확히 같은 문제가 있음을 알고 있습니다. appSettings 섹션을 추가 한 다음 답변에 따라 구성 섹션을 선언하여 머리카락을 찢었습니다. 마지막으로 이미 설정 파일을 추가로 appSettings 섹션을 선언했음을 알았습니다. 두 섹션 모두 내 외부 설정 파일 "appSettings.config"를 가리 키지 만 속성 파일 을 사용하는 첫 번째 appSettings 요소 는 다른 하나는 configSource 속성을 사용했습니다. . 질문은 connectionStrings에 관한 것입니다. appSettings 요소가 다른 속성으로 복제되는 connectionStrings 요소 인 경우에는 충분합니다.

바라건대, 이것은 내가 한 길을 가기 전에 다른 사람에게 해결책을 제공 할 수 있기 때문에 한두 시간을 낭비하게됩니다. 오 개발자들의 삶을 한숨 . 개발하는 것보다 디버깅에 며칠이 더 걸립니다!


빙고. 했다 appSettingsapplicationSettings모두.
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

사용자 범위 설정이있는 경우 [Userfolder]\AppData\Local\[ProjectName]폴더 어딘가에 user.config 파일이있을 수도 있습니다 .

나중에 사용자 범위 설정을 제거하면 user.config가 자동으로 제거되지 않으며 동일한 오류 메시지가 발생할 수 있습니다. 폴더를 삭제하면 나에게 속임수가되었습니다.


1

와우 이걸 알아내는 데 영원히 걸렸습니다. 어떤 이유로 속성 [assembly: AssemblyCompany("CompanyName")]을 변경하면 AssemblyInfo.cs이 오류가 사라졌습니다. 속성 값이 다른 프로젝트를 참조하고있었습니다 [assembly: AssemblyCompany("CompanyName")]. 두 프로젝트 모두 동일한 속성 값을 가지도록하고 훌륭하게 작동했습니다!


이것이 버그입니까? 회사 이름을 참조하려는 타사 프로젝트와 일치시킬 수는 없습니다.
Denise Skidmore

1

저와 같은 문제 App.config에서 verion = "v3.5"를 제거하여 문제를 해결했습니다.

전에

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

오랫동안 검색 한 후에이 예외에는 구성 파일의 문제를 정확하게 알려주는 내부 예외가 있습니다.


내 app.config의 다른 섹션에 주석을 달지 않으려 고했지만 예외에 대해서는 내부 예외를 보지 못했습니다. 그리고이 답변을 본 후 문제가 무엇인지 발견했습니다. 감사.
시드

0

app.config에 연결 문자열과 같은 것을 추가하면 정의 된 구성 섹션 외부에 항목을 추가하면 즉시 불만을 제기하지 않지만 즉시 액세스하지 않으면 액세스 할 수 있다는 점에 주목할 가치가 있습니다. 위의 오류.

모든 주요 섹션을 접고 정의 된 섹션 외부에 항목이 없는지 확인하십시오. 분명히, 당신이 실제로 그것을 발견했을 때.


0

필자의 경우 유일한 해결책은 System.Configuration테스트 프로젝트에서 참조를 추가하는 것입니다.


0

이것은 다소 바보이지만 나를 위해 코드의 소스 제어에서 최신 정보를 얻음으로써 문제를 해결했습니다. 다른 사람이 추가 한 새로운 구성 요소가 있다고 생각하며 구성 파일을 덮어 써야했습니다. OP는 내가 얻은 오류를 보여 주며 실제로 올바른 방향으로 가리 키지 않았습니다.


0

나도 같은 문제에 직면했지만 실수로을 작성하지 않고을 작성했습니다. 이전 태그는이 태그 안에 들어가야합니다. 따라서 '구성 시스템을 초기화하지 못했습니다'오류가 발생했습니다. 그것이 도움이되기를 바랍니다.


0

필자의 경우 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

필자의 경우 .edmx 파일 내에서 '데이터베이스에서 모델 업데이트'명령을 실행했습니다. 이 명령은 app.config 파일에 불필요한 연결 문자열을 추가했습니다. 해당 연결 문자열을 삭제하고 모든 것이 다시 양호했습니다.


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로 저장하십시오. 그것은 콘솔 응용 프로그램의 경우 문제였습니다.


0

으로 @Flash 고든은 자신의 코멘트에 언급, 당신은 당신의 모든 사용자 정의 태그를 (섹션)을 정의해야합니다 의 App.config의 아래 파일 <configSections>. 예를 들어 SpecFlow를 사용하고 <specFlow>태그를 추가하여 테스트 자동화 프로젝트를 진행중인 경우 가장 간단한 App.config 버전은 다음과 같습니다. 여기에 이미지 설명을 입력하십시오


0

방금 이것을 가지고 있었고 <configuration>요소 안에 요소가 중첩되어 있기 때문 <configuration>입니다.


0

Visual Studio 및 전체 PC를 다시 시작했습니다. 프로젝트를 정리하고 bin 파일을 다시 작성하고 삭제했습니다.

구성을 x64에서 x86으로 변경할 때까지 아무런 도움이되지 않았습니다. x86에서 작동했지만 다시 변경하면 작동했습니다!


0

위의 모든 솔루션을 시도하여 단위 테스트 중 하나가 app.config 파일에서 구성을 선택하지 못한 이유를 알아 냈습니다.

같은 어셈블리에 대한 두 가지 참조가 있습니다.

중복 참조

전후의 프로젝트 파일

노란색으로 (중복) 참조를 제거하면 나를 위해 고정되었습니다.

나는 이것이 다른 누군가에게 효과가 있기를 바랍니다.


0

.Net Core WinForms / WPF / .Net 표준 클래스 라이브러리 프로젝트를 위한 간편한 솔루션

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>

step3 : 가치를 얻으십시오

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

에서 호출하는 경우 메인 프로젝트에 파일 Class Library을 추가하십시오 App.Config.


0

사용자 정의 섹션이있는 경우 구성 태그 바로 아래의 configSections에서 언급해야합니다.

변형 파일을 확인하고 불필요한 태그를 제거했는지 확인하십시오. 변형 될 섹션 만 변형 파일에 있어야합니다. 필요하지 않은 경우 변환 파일에서 구성 섹션을 언급하지 마십시오. 이것은 또한 문제를 일으킬 것입니다.

machine.config에 구문 오류가 있으면이 오류도 예상됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.