2013-10-09 6 views
0

via (B) via Service를 참조하는 프로젝트 (A)가 있습니다. 서비스 참조.서비스 참조를 통해 호출 할 때 ConfigurationSection을 읽는 DLL에 문제가 발생했습니다.

서비스 (B)는 DLL에 대한 참조를 가지고 (호출 할 수 있습니다 Business.dll) DLL이 쉽게 나는 것 생각되는 일부 구성이의 app.config를 수용 자신의 존재 여부를 읽을 것을

내부적으로 (콘솔 앱으로) 또는 외부에서 서비스 (B)로 호출됩니다.

현재로서는 작동하지 않습니다. 의 app.config (또는,보다 구체적으로 Business.dll.config 파일)에서 모든 읽기 및되지 않는 : 프로젝트 (A)에서 호출 할 때

(BusinessConfigurationSection)ConfigurationManager.GetSection("GroupName/SectionName"); 

는 항상 null입니다. Business.dll.config를 Service (B)의 bin 디렉토리에 저장할 수 없습니까? 아니면 단순히 불가능한 일을하고 있습니까? 이 일을해야한다는 더 좋은 방법이 있습니까?

감사합니다. 당신이 프로젝트 A로부터 호출 할 때

답변

1

Configuration config; 
ExeConfigurationFileMap ecfm = new ExeConfigurationFileMap(); 
ecfm.ExeConfigFilename = <your_config_file_path>; 

config = ConfigurationManager.OpenMappedExeConfiguration(ecfm, ConfigurationUserLevel.None); 
var mySection = (BusinessConfigurationSection)config.GetSection("GroupName/SectionName"); 
+0

이 경우 프로젝트 (A) 또는 서비스에서 구성 파일에 액세스 할 수 있습니까? 나는 아직도 그것에 대해 약간 혼란 스럽다. – Mani5556

+0

@ Mani5556 명시 적으로로드 했으므로 어디서 원하는지 – Pascalz

+0

잘 명시 적으로로드하고 있지만 비즈니스 프로젝트 내에서 여전히로드 중입니다. – Mani5556

1

은 ConfigurationManager가 항상, 당신은 DLL의 설정을 열려면 다음 코드를 사용할 수 있습니다

DLL을에서하지 PROJECTA의의 App.config에서 읽을

// Get the configuration file. The file name has 
     // this format appname.exe.config. 
     System.Configuration.Configuration config = 
     ConfigurationManager.OpenExeConfiguration(dllPath); //dll config 
당신은로드 할 수