Web.config에는 전역적으로 사용되는 상수값을 많이 저장한다. 상수라 하면, 변하지 않는 일정한 값을 말한다.

ASP.NET WebForm 프로젝트를 새롭게 만든다면, Web.config의 형태는 아래와 같다.

 

Web.config

 

Web.config 하위에 Web.Debug.config/Web.Release.config 두개로 나뉘어 있다.

  • Web.config : 전반적인 내용을 모두 가지고 있다. (기본 파일이라고 생각하면 좋다.)
  • Web.Debug.config : 빌드 구성이 Debug 모드일 경우 (기본 파일의 내용을 추가/수정/삭제 가능)
  • Web.Release.config : 빌드 구성이 Release 모드일 경우 (기본 파일의 내용을 추가/수정/삭제 가능)

Web.config 내에 많은 정보를 가지고 있지만, 테스트 서버 / 라이브 서버에서 사용되는 상수 값이 달라야 하는 경우가 많이 존재한다. 그 대표적인 예가 connectionStrings이다.

 

그래서 connectionStrings을 Debug/Release Web.cong에서 어떻게 사용하는지 알아보려고 한다.

 

 

Web.config

1
2
3
4
5
<connectionStrings>
    <add name="MyDB"      connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True" />
    <add name="MyDB_TEST" connectionString="Data Source=DebugSQLServer;Initial Catalog=MyDebugDB;Integrated Security=True" />
</connectionStrings>
<dataConfiguration defaultDatabase="MyDB_TEST" />
cs

 

메인이 되는 Web.config 에서는 connectionStrings 노드 아래 두 가지 자식 노드(DB 정보)를 설정해두었다.

  • MyDB : 라이브 DB 서버 정보
  • MyDB_TEST : 테스트 DB 서버 정보

5번째 라인을 보면, defaultDatabase 속성 값을 로컬에서 사용할 DB 정보로 입력해 주면 된다.

라이브 DB를 원하면 MyDB, 테스트 DB를 원하면 MyDB_TEST를 입력해주면 된다.(네이밍을 각자가 원하는 걸로)

 

Web.config에서 해야 할 일은 끝났다. 이제는 게시(배포)할 때에 Debug/Release 모드에 대해서 달라져야 하는 값을 설정해주면 된다.

 

 

Web.Debug.config

1
2
3
4
5
6
<connectionStrings>
    <!-- 라이브 서버 정보는 삭제 -->
    <add name="MyDB" connectionString="" xdt:Transform="Remove" xdt:Locator="Match(name)" />
</connectionStrings>
<!-- 테스트 서버를 defaultDatabase로 설정 -->
<dataConfiguration defaultDatabase="MyDB_TEST" xdt:Transform="SetAttributes" />
cs

 

xdt:Transform 속성을 Remove로 설정해주면, connectionStrings 노드 아래 두 가지 버전의 자식 노드 중 이름이 MyDB라는 자식은 삭제된다.

그리고 6번째 라인에서 이미 지정되어 있지만, defaultDataBase의 값을 테스트 서버 정보인 MyDB_TEST로 지정해준다.

 

게시했을 때 변경된 내용을 미리 보고 싶으면 아래 그림처럼, Web.Debug.config를 우클릭하여 변환 미리보기를 클릭하면 된다.

 

변환 미리 보기 클릭
(좌) : 변경 전, (우) : 변경 후

 

 

Web.Release.config

1
2
3
4
5
6
<connectionStrings>
    <!-- 테스트 서버 정보는 삭제 -->
    <add name="MyDB_TEST" connectionString="" xdt:Transform="Remove" xdt:Locator="Match(name)" />
</connectionStrings>
<!-- 라이브 서버를 defaultDatabase로 설정 -->
<dataConfiguration defaultDatabase="MyDB" xdt:Transform="SetAttributes" />
cs

이번에는 Web.Debug.config 에서 했던 것과 반대로만 해주면 된다.

 

(좌) : 변경 전, (우) : 변경 후

 

 

Web.Beta.config

이번에는 기존에 없었던 Web.Beta.config를 만들어보자.

 

1. 프로젝트 우클릭 후, 게시 버튼 클릭
2. 새로 만들기 클릭
3. 새로운 프로필 만들기
4. Properties => PublishProfiles 아래 위에 만든 프로필이 생성. 이름은 변경해야 합니다. 
5. Config 변환 추가 클릭
6. Web.config 아래에, 새로운 config 파일이 생성

 

 

Web.confg 하위에 새로운 Web.Beta.config 파일을 생성시켰다.

xdt:Transform 속성을 Insert로 설정해 준다면, 새로운 DB 정보를 추가해줄 수 있다.

 

1
2
3
4
5
6
7
8
9
<connectionStrings>
    <!-- 라이브 / 테스트 서버 정보는 삭제 -->
    <add name="MyDB" connectionString="" xdt:Transform="Remove" xdt:Locator="Match(name)" />
    <add name="MyDB_TEST" connectionString="" xdt:Transform="Remove" xdt:Locator="Match(name)" />
    <!-- 베타 서버 정보 추가 -->
    <add name="MyDB_BETA" connectionString="Data Source=BetaSQLServer;Initial Catalog=MyBetaDB;Integrated Security=True" xdt:Transform="Insert" />
</connectionStrings>
<!-- 베타 서버를 defaultDatabase로 설정 -->
<dataConfiguration defaultDatabase="MyDB_BETA" xdt:Transform="SetAttributes" />
cs

 

기존에 존재했던, MyDB/MyDB_TEST는 삭제한 뒤, MyDB_BETA를 추가해준다.

 

(좌) : 변경 전, (우) : 변경 후

 

마치며

게시 방법에 따라서 환경 변수를 다르게 설정하는 방법을 알아봤다.

그중에서도 우리가 가장 많이 사용하는 connectionStrings를 이용해서 알아봤는데, 이거뿐만 아니라 더 많이 사용되니 잘 알아두도록 하자.

 

+ Recent posts