ASP.Net을 처음 썼을 때 web.config 기능이 참 마음에 들었습니다. 이제는 하도 많이 써서 web.config 없는 웹 애플리케이션은 생각도 못하게 되었네요. 그런데, 쓰다보니, 환경Environment에 따라 값을 다르게 해줘야 할 필요를 느낍니다.
예를 들어 제가 일하는 곳에서는 Dev, Integration, PAT, Staging, LIVE 총 5가지의 서버가 있습니다. 제 컴퓨터에서 개발한 코드가 먼저 Dev나 Integration 서버에서 테스팅 된다음, PAT, Staging을 거쳐 최종적으로 LIVE 서버에 배포가 되죠. 그런데, web.config의 내용이 각 서버마다 다를 때가 꽤 있습니다. DB Connection string이나 파일서버의 경로 등은 당연히 환경마다 다르죠. 특히 Live 서버와 테스팅 환경은 많이 다릅니다. 이럴때는 배포할 때마다 값을 변경해 줘야 하는데, 잊어먹기가 아주 쉽습니다. 그래서 한번 해결책을 찾아 봤습니다.
역시 인터넷에는 저보다 훨씬 일찍 이런 고민들을 하신 분들이 있네요. Google에게 물어보니 대충 두 분이 나오십니다.
참고 자료
저는 Scott Gu 형님보다 위의 Joel 사이트에 나와있는 내용이 마음에 드네요.
<appSettings file="site.config">
<add key="commonSetting1" value="value1"/>
<add key="commonSetting2" value="value2"/>
</appSettings>
and then the site.config looks like
<appSettings>
<add key="dbconnectionstring" value="bleh"/>
</appSettings>
<appSettings />의 file 속성을 지정해주면, 거기에 지정된 파일의 Key 값을 마치 <appSettings />에 있는 것 처럼 해서 쓸 수 있습니다. 그래서 environment에 상관없이 공통되는 것들은 web.config에 넣어놓고, 환경마다 달라지는 건, site.config에 넣으면 되네요. 진작 이렇게 해서 쓸 것.