2010-01-31 2 views
2

조건부로 web.config 항목을 반환하려면 어떻게해야합니까? IE : Web.config의 폴더는 'C : \을 Inetpub \ www가 \ myTestSite'인 경우 '를 ConnectionString'를 TestDB 다른 수익을 돌려 'PRODDB'조건부로 web.config 항목을 반환하는 방법

+2

다른 설치 (예 : 빌드 프로세스에 의해 전적으로 환경적인 변경이 필요합니다)에 다른 web.config를 사용 하시길 강력히 권합니다. –

답변

3

이 같은 시도 할 수 있습니다 :

string conn; 
if (Server.MapPath("~/web.config").StartsWith(@"C:\inetpub\www\myTestSite")) 
    conn = ConfigurationManager.ConnectionStrings["TestDB"].ConnectionString; 
else 
    conn = ConfigurationManager.ConnectionStrings["ProdDB"].ConnectionString; 

을 사이트마다 별도의 구성 파일을 사용하거나 코드가있는 위치를 테스트하는보다 정교한 방법을 사용하여 다른 접근 방법을 권하고 싶습니다. 내가하는 일은 내 개발 컴퓨터 용 machine.config 파일의 appSettings와 내 테스트 및 프로덕션 웹 서버의 키를 입력하여 내 응용 프로그램이 어떤 환경에서 실행되고 있는지를 알 수 있도록하는 것입니다. 해당 appSetting 값을 사용하여 사용할 연결 문자열을 결정합니다.

+0

+1 AppSetting 키, 훨씬 더 결정적인 접근 방식입니다. –

+0

응용 프로그램은 실행중인 환경을 알아야합니다! 다른 환경에 다른 web.config 파일을 사용하는 것이 좋습니다. 대신 하나의 web.config 파일에 다른 모든 구성을 사용하십시오! –

2

다양한 환경에 다른 설정 파일을 사용하는 것이 훨씬 낫습니다.

당신은 당신의 web.config 파일에 다음과 같은 수 있습니다 :

<connectionStrings configSource="SiteSettings\connectionStrings.config"/> 

을 configSource은 web.config 파일의 경로를 상대 경로입니다. 그럼 당신은 쉽게 프로젝트에 4 개 가지 connectionStrings.config 파일을 만들 수 있습니다 : connectionStrings.config.dev,, connectionStrings.config.prod을 connectionStrings.config.staging connectionStrings.config.test, . 이 설정을 통해 올바른 환경에 적합한 connectionStrings.config 파일을 자동으로 선택하도록 빌드 프로세스를 구성 할 수 있습니다. 이렇게하면 유지 관리가 훨씬 쉬워집니다.

ScottGu은이 방법을 설명하는 article을 갖는다. 그리고 도움이 될만한 Customizing web.config for different environments에 대한 기사가 하나 더 있습니다.

관련 문제