Web.config에는 전역적으로 사용되는 상수값을 많이 저장한다. 상수라 하면, 변하지 않는 일정한 값을 말한다.
ASP.NET WebForm 프로젝트를 새롭게 만든다면, 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를 만들어보자.
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를 이용해서 알아봤는데, 이거뿐만 아니라 더 많이 사용되니 잘 알아두도록 하자.
'개발 > ASP.NET' 카테고리의 다른 글
[ASP.NET] js/css을 min 파일로 만들어보자. (8) | 2019.11.27 |
---|---|
[ASP.NET] 404 / 500 Error 일때, Web.config를 이용하자! (2) | 2019.10.10 |
[ASP.NET] Global.asax 에 대해서 알아보자. (0) | 2019.08.13 |
Server.Transfer vs Response.redirect 무엇이 다를까? (2) | 2019.08.12 |
NameValueCollection foreach문 사용 (0) | 2018.08.03 |