2011-12-06 2 views
2

SettingsProvider를 사용하여 구성 설정을 읽는 Windows 응용 프로그램이 있으며 파일이없는 경우 기본값을 설정합니다.Windows 서비스에서 system.configuration.settingspropertynotfoundedeception 오류가 발생했습니다.

정상적으로 정상적으로 작동합니다.

이 응용 프로그램을 시작하는 Windows 서비스를 작성하려고합니다. 서비스에서 실행하면 모든 설정 속성에 System.Configuration.SettingsPropertyNotFoundException이 표시됩니다.

서비스가 앱을 실행 중일 때 어떻게이 예외를 해결할 수 있습니까?

답변

2

이것은 단순히 앱이 .Settings 파일을 읽을 수 없음을 의미합니다. 두 가지 원인을 생각해 볼 수 있습니다.

  1. 서비스는 .settings 파일에 액세스 할 수없는 계정으로 실행됩니다. (또는 .config 파일에 따라 다름) 서비스가 응용 프로그램을 시작할 수 있고 설정 파일이 아닌 응용 프로그램에 대한 권한을 가지지 못하기 때문에 이것은 거의 발생하지 않습니다.

  2. 런타임은 설정 파일을 찾을 수 없습니다. 설정이 실행 파일의 루트 시작 경로에 있어야합니다. 해당 기계에 있는지 확인하십시오.

그러나 Google 검색 결과는 내가 생각하지 못한 명백한 가능한 원인을 나타 냈습니다. .settings가 마지막 컴파일 후에 추가 되었습니까? Visual Studio에서 응용 프로그램을 컴파일하고 다시 시도하십시오.

0

Initialize 중 던지고 예외 인 사용자 정의 SettingsProvider을 작성하면 또 다른 원인이 발생할 수 있습니다. 내 경우

, 내가 이런 짓을했다 : name 이후

public class CustomSettingsProvider : SettingsProvider 
{ 
    public override void Initialize(string name, NameValueCollection config) 
    { 
     base.Initialize(name, config); 
    } 
} 

항상 null로, base.InitializeArgumentNullException을 던지고 전달됩니다. 다음과 같이 null이 아닌 이름을 전달하여 문제를 해결했습니다.

관련 문제