보통 asp.net 웹어플리케이션 작업할때 신경을 써야하는 부분이 바로 web.config 파일인데,
공부하는 중에 한번쯤 익혀야 하는 사항이라 정리해봤다.
아래의 쎄이 님의 네이버 블로그 글 내용을 제가 정리한 것입니다.
출처 ; http://tear230.blog.me/100003832326
보통 DB 연결문자열을 아래의 소스로 삽입하여 사용한다.
<appSettings>
<app key="connectionString" value="Server=(local);Uid=sa;Pwd=myPwd;Database=Pubs" />
</sppSettings>
만약, 한 웹어플리케이션 내에 두개의 폴더 (folder1, folder2)가 존재하고, 각각의 폴더는 서로 다른 데이터 베이스에 접근하여
데이터 쿼리를 가져와야 한다면,
두가지 방법이 가능하다.
1. 각 폴더마다 독립적인 web.config 파일을 설정한다.
2. web.config 파일의 location 태그를 이용한다.
첫번째 방법의 경우, 한 어플리케이션내에 3개의 web.config 파일이 있어야 한다. 각 폴더마다 독립적인 설정사항이 많다면
사용해야 하겠지만, 일반적으로 구성 설정 파일이 많아지면 복잡해지고 관리가 불편해진다.
두번째 방법은 location 태그의 path 속성을 이용하여 아래와 같이 지정할 수 있다.
<location path="folder1">
<appSettings>
<app key="connectionString" value="Database=Northwind;Uid=sa;Pwd=myPwd;Server=localhost" />
</appSettings>
</location>
<location path="folder2">
<appSettings>
<app key="connectionString" value="Database=Pubs;Uid=sa;Pwd=myPwd;Server=localhost" />
</appSettings>
</location>
실제 연결문자열을 web.config 에서 불러오는 방법은
private void Page_Load(object sender, System.EventArgs e)
{
string conString = ConfigurationSettings.AppSettings().Item("connectionString");
}
이렇게 하면 folder1 의 모든페이지는 Northwind 데이터베이스의 , folder2 의 모든페이지는 pubs 데이터베이스 연결문자열을 받아오게 된다.
------------------------------------
그리고, 아래의 사항은 외국 사이트 블로그 중에서 web.config 상에서 상위 종속성을 방지하는 내용의 좋은 글이 있어서 소개한다.
출처1 : http://jasongaylord.com/blog/prevent-child-apps-from-inheriting-dependencies?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+JasonNGaylord+%28Jason+N.+Gaylord%27s+Blog%29
출처2 : http://runtingsproper.blogspot.com/2010/04/solved-breaking-parent-webconfig.html
<location path="." inheritInChildApplications="false">
<system.web>
<!-- Compilation section with assemblies -->
</system.web>
</location>
보통은 최상위의 web.config 으로 인해 그 하위 어플리케이션은 종속적으로 영향을 받게된다.
위에서 핵심은 inheritChildApplications="false" 이다. path 를 현재폴더로 잡아 놓고 이 속성으로 인해 이하 하위 어플리케이션은 상위에 종속되지않고 별개로 운영될 수 있다.
포스트글 마지막부분에 의미 심장한 말도 남겨놓았다.
서브 도메인이나 또다른 도메인이 있는 어플리케이션에도 우회적으로 사용될수 있다고 한다.
아오 죽인다. 테스트해봐야 겠당 ^^;;