2012-11-20 6 views
4

클래스 라이브러리의 DLL을 사용하는 웹 응용 프로그램이 있습니다. 나는클래스 라이브러리에서 app.config 값에 액세스하는 방법은 무엇입니까?

내가 액세스하기 위해 노력하고있어 어떻게 클래스 라이브러리에 app.config 값에 액세스 할 수 없습니다입니다 app.config :

ConfigurationSettings.AppSettings["conStr"].ToString(); 

내가 ConfigurationManager에게 그것을 사용하려고하면이

또한 null 값을 반환 어셈블리 참조가 없거나 없습니다.

System.Configuration도 사용됩니다.

+1

.NET 클래스 라이브러리는 "자체"구성 파일을 사용하지 않습니다. .NET 구성 요소 라이브러리는 구성 파일을 사용하는 응용 프로그램의 구성 파일을 찾습니다. –

답변

8

클래스 라이브러리의 app.config을 덮어 쓰기 때문에 AppSettings 값을 응용 프로그램의 web.config 안에 넣어야합니다.

System.Configuration 네임 스페이스에 대한 참조를 클래스 라이브러리 프로젝트에 추가하면 app.config 파일이 아니라 web.config 파일에서 예상되는 값을 얻게됩니다.

2

는 웹 응용 프로그램이 web.config 파일이 아닌 app.config를 검색 할 것이라는 점을이

ConfigurationManager.AppSettings["conStr"] 

공지 사항처럼 키를 얻을 프로젝트에서 System.Configuration 라이브러리에 대한 참조를 추가!

+0

웹 응용 프로그램의 경우 "plain"ConfigurationManager' 대신 "WebConfigurationManager"를 사용해야합니다. –

0

AMembers의 대답이 효과가있어 실행이 가능해야합니다. 그러나 나는 ("묻기를 원하지 않음")이라고 말하면 그들이 연결해야하는 곳에있는 도서관을 좋아합니다. 대신 라이브러리를 필요없이 호출 코드 공급에게 그것을 보자, 그것은 연결 문자열의 위치 :

var myLib = new MyLib(ConfigurationManager.AppSettings["conStr"]); 

이 방법, 구성은 Web.config의 /의 app.config/사용자 지정 설정/레지스트리/.INI 파일에 있는지 여부 , 당신의 도서관은 상관하지 않습니다.

+1

웹 응용 프로그램의 경우 "plain"ConfigurationManager' 대신 WebConfigurationManager를 사용하십시오. –

+0

. 내 코드 예제를 콘솔 응용 프로그램에서 가져 오는 것을 고려해 보겠습니다. – hometoast

관련 문제