2009-08-11 6 views
0

이 질문은 다소 기본적인 것으로 사과드립니다. 그러나 많은 검색을 한 후에 적절한 답을 찾지 못했습니다. 나는 윈도우 폼 애플리케이션을 만들고 있는데, app.config 파일을 참조하여 데이터 파일의 위치를 ​​알아야한다. 전화하기 전에.NET 예외 처리 응용 프로그램 구성 파일

XElement xml = XElement.Load(ConfigurationManager.AppSettings["EntityData"].ToString()); 

app.config 파일이 있는지 확인하고 싶습니다. 나는 여러 가지 방법을 시도했지만 그것은 훨씬 더 많은 일이 될 것으로 보인다. 예를 들어 나는 파일

 Uri uri = new Uri(System.Reflection.Assembly.GetExecutingAssembly().CodeBase); 
     string fullConfigurationFilename = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(uri.AbsolutePath), configurationFilename); 

의 경로를 확인하려면 다음 코드를 사용하기 위해 노력 해왔다하지만 난 경로에 공백이 문제로 실행. app.config의 존재 여부를 확인할 수있는 더 좋은 방법이 있습니까? 확인해야 할 필요가 있습니까?

고맙습니다.

+0

구성 데이터에 액세스하십시오. 파일이 누락되면 예외가 throw되어 잘못된 정보가 자세히 제공됩니다. –

+0

예. 정말로 AppSettings 파일에 액세스 할 때 try catch를 넣고 확인하려는 경우 – JohnIdol

+0

응용 프로그램에서 응용 프로그램 설정에 액세스 할 가능성이 높다는 점을 제외하고는 엉망이 될 수 있습니다. –

답변

2

구성 파일이 있는지 확인하지 않아도됩니다. 키가 발견되면 AppSettings 문자열을 반환 할 것을

string temp = ConfigurationManager.AppSettings["EntityData"]; 
if (temp != null) 
{ 
    XElement xml = XElement.Load(temp); 
} 

주, 그래서 당신은 그것을 변환 ToString를 호출 할 필요가 없습니다 : 다음 코드는 예외없이 작동합니다. 키가 존재하지 않으면 테스트 할 수있는 null 참조를 받아야합니다.

+0

구성 파일이 없으면 예외가 발생합니다. 나는 예외를 처리 할 수 ​​있지만보다 견고한 솔루션이 예외 처리에 의존하기 전에 거기에 있도록 보장 할 것 같습니다. –

+0

@ lansinwd : 확실합니까? 위의 코드를 미리 설정하지 않은 설정 파일과 함께 존재하지만'appSettings' 섹션없이 'appSettings' 섹션과 함께 존재하지만, 문제의 키가없는 파일을 사용해 보았습니다. 이러한 경우들 중 어느 것도 예외를 던지지 않고'null '을 반환했습니다. 나는 Console 애플리케이션에서 이러한 테스트를 수행했다. 다른 응용 프로그램 유형이 다른 동작을 초래할 수 있습니다. –

+0

답장 해 주셔서 감사합니다. 나는 VS2005에서 Windows 양식 응용 프로그램 (C#) 어젯밤에 PC에서 이것을 시도하고 어떤 예외도받지 못했습니다. 그러나, 오늘 VS2008에서 다시 시도했을 때, config 파일을 삭제하고 실행 파일을 실행할 때 예외가 발생했습니다. –

1

System.Configuration은이 모든 작업을 수행해야합니다. 구성 파일을 수동으로로드 할 필요가 없습니다.