2011-03-07 11 views
4

웹 프로젝트 (mvc)와 데이터 액세스 레이어가 분리 된 클래스 라이브러리 프로젝트에 있습니다. 해당 라이브러리 프로젝트에있는 app.config의 연결 문자열에 액세스해야합니다.라이브러리 내에서 연결 문자열에 액세스하는 방법

ConfigurationManager.ConnectionStrings [0] .ConnectionString은 이상한 것을 가져옵니다. 라이브러리의 설정이나 웹 프로젝트의 설정 파일에 이런 종류의 설정이 없습니다.

은의 App.config은 다음과 같습니다

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <connectionStrings> 
    <add name="DALConnectionString" connectionString="User ID=sa;Password=pass;Initial  Catalog=db;Data Source=srv\SQL2005;" /> 
</connectionStrings> 
</configuration> 

답변

5

기본적으로 클래스 라이브러리는 구성 파일에 액세스 할 수 없습니다.

클래스 라이브러리의 클라이언트 (이 경우 웹 프로젝트)는 구성 설정을 제공 할 수 있습니다.

따라서 모든 관련 설정, 연결 문자열을 웹 구성 파일에 넣으십시오. 클래스 라이브러리의 ConfigurationManager 코드는 웹 프로젝트 구성 설정을 사용합니다.

0

당신이 다음 런타임에 구성 관리자가 클래스 라이브러리 내에서 실행되는 경우에도 그것을 사용하는 Web.config의에서 위의 조각을 추가해야합니다.

0

DLL에 대해 app.config에 액세스 할 수 없습니다.

app.config은 진입 점 어셈블리에서만 작동하며 웹 프로젝트의 경우 web.config에서만 작동합니다.

진입 점 config에 연결을 복사하거나 구성 XML을 구문 분석하여 구성을로드 해보십시오. 권장하지는 않습니다.

5

라이브러리는이 경우 에 dependency injection을 사용해야합니다.

데이터 액세스 계층 (DAL) 라이브러리의 클래스는 연결 문자열을 constructor argument 또는 property value으로 취해야합니다.

이렇게하면 다른 프로젝트에서도 DAL을 사용할 수 있으며 mvc 웹 응용 프로그램에 연결되어 있지 않은지 확인합니다.

DAL을 사용하는 코드에서 구성 파일의 연결 문자열을 읽고 클래스 생성자에 삽입하십시오.

관련 문제