2013-06-04 4 views
0

내가 응용 프로그램을 초기화 :구성 파일 및도록 SqlConnection은 Window_Loaded 코드를 다음과 같이 (let`s는 <b>TEST.EXE</b> 전화)

private void Window_Loaded(object sender, RoutedEventArgs e) 
{ 
    SqlConnection sqlConnection = new SqlConnection(); 
} 

더 아무것도 덜 아무것도. 응용 프로그램은 문제없이 작동합니다. 빈 설정 파일 (test.config)을 같은 디렉토리에 복사하면 응용 프로그램이 충돌합니다.

구성 파일을 응용 프로그램 프로젝트에 추가하지 않았습니다.이 파일은 비어있는 XML 파일이며 수동으로 같은 디렉터리에 복사되고 .config 파일로 이름이 바뀝니다 (이 파일은 xml 선언 만 포함하고 나중에 사용됩니다).

try-catch를 사용하여 누락 된 루트에 대한 예외를 catch 할 수 있지만 문제는 몇 초 후에 응용 프로그램이 충돌한다는 것입니다.

SqlConnection이이 구성 파일을 읽는 이유는 무엇입니까? 그리고 예외를 잡은 후에도 왜 내 응용 프로그램이 충돌합니까?

+0

SqlConnection을 사용하여 코드 줄을 제거하면 문제가 해결됩니까? – mortb

+0

예. SqlConnection 줄을 제거하면 충돌이 발생하지 않습니다. test.config를 제거하거나 이름을 바꾸면 동일하게됩니다. – majk86

답변

0

귀하의 구성 파일은 test.exe.config라고 가정합니다.

처음에는 구성 파일을 읽으려고 할 때 응용 프로그램이 충돌한다고 생각합니다. 귀하의 경우, 이것은 SqlConnection 인스턴스를 인스턴스화 할 때 발생하지만, 발생할 수있는 다른 많은 방법이 있습니다.

구성 파일에 <configuration> 요소를 추가하십시오.

편집

이 동작을 재현하고 스택 추적을 조사했다. DbConnectionPoolCountersSystem.Diagnostics.TraceSwitch에 액세스하며 구성 파일에서 구성 정보를 읽어야합니다.

<configuration> 요소가 포함 된 test.exe.config 파일을 추가해야합니다. 그러면 구성 시스템에서이 파일을 사용하고 빈 test.config 파일을 무시합니다.

+0

아니요. 파일은 test.config (.exe없이)라고합니다. 그리고이 설정 파일은이 응용 프로그램에 속하지 않습니다. 솔루션에 추가되지 않았습니다. 그것은 단지 같은 디렉토리에있는 다른 목적을위한 설정 파일입니다. – majk86

+0

@ majk86 - 스택 추적을 게시하십시오. – Joe

+0

감사합니다. 나는 왜 그것이이 응용 프로그램에 속하지 않는 구성 파일을 읽는 지 궁금? 그냥 bcs 그것'test.config라고? 이 설정 파일을 솔루션에 추가하지 않으면 설정 파일을 읽는 것을 끌 수 있습니까? 어쨌든 허용 된 대답으로 표시합니다. – majk86

0

sqlconnection()의 매개 변수화 된 생성자를 사용하십시오. 안전한 측면을 위해 연결 문자열을 전달하십시오. 귀하의 응용 프로그램에 의존하지 않습니다

+0

어쨌든 충돌이 발생합니다. 새로운 SqlConnection ("Server = 'server'; User = 'user'; Password = 'password';") – majk86

+0

유효한 연결 문자열이 아닙니다. http://connectionstrings.com/ – khellang

+0

어떻게 그렇게 ?? 매력처럼 작동합니다. – majk86