본문 바로가기
개발, IT

Web.Config 설정

by Nabi™ 2008. 6. 13.

<appSettings> 섹션
이 섹션은 <system.web> 섹션의 하위 섹션이 아니라 같은 레벨에 존재하는 섹션으로 개발자가 Web.config 파일 안에 직접 필요한 특성과 값을 추가할 수 있도록 제공되는 섹션입니다.


이 섹션의 사용 형식은 다음과 같습니다.


<appSettings>
 <add key="key" value="value"></add>
 <remove key="key"></remove>
 <clear></clear>
</appSettings>


보시는 바와 같이 <appSettings> 섹션은 <add>, <remove>, <clear> 등 세 개의 하위 섹션을 제공합니다.


<add> 하위 섹션
이 섹션은 개발자가 필요한 특성 및 값을 추가하는 섹션으로 다음과 같은 특성을 갖습니다.


특성

설명

key

추가할 특성 입니다

value

해당 키에 매핑될 값입니다.


<remove> 하위 섹션
이 섹션은 <add> 섹션에 의해 추가된 키 값을 제거하기 위한 섹션으로 다음과 같은 특성을 갖습니다.


특성

설명

key

제거할 이름입니다.


보통 <appSettings> 섹션의 가장 좋은 활용 예로는 데이터베이스 연결을 위한 연결 문자열을 저장하여 필요한 때에 코드 내에서 호출하는 것입니다. 기존의 ASP에서는 데이터베이스 연결 문자열을 코드 상에 직접 작성해야 했으며 어떤 이유로든 코드가 유출되면 데이터베이스 연결 정보도 그대로 유출되는 위험을 안고 있었으며 또 실제로 IIS의 버그 등으로 정보가 유출된 사례가 있었습니다.


그러나 Web.config 파일을 사용하면 Web.config 파일이 유출되지 않는 한 연결 정보를 안전하게 보관할 수 있으며 ASP.NET이 Web.config 파일에 대한 웹 액세스를 방지해 줌으로써 파일의 유출을 어느 정도 막아주기도 합니다.


<appSettings> 섹션에 개발자가 임의로 추가한 키와 값의 쌍은 System.Configuration.ConfigurationSettings 클래스의 AppSettings 컬렉션을 통해 읽어올 수 있습니다.


그렇다면 실제로 <appSettings> 섹션에 연결 문자열을 추가하고 이를 이용해서 데이터베이스에 액세스하는 간단한 웹 폼 페이지를 구현해 볼까요?


먼저 다음과 같이 Web.config 파일에 <appSettings>섹션을 추가합니다.


1

<configuration>

2

   <appSettings>

3

     <add key=”connectString”

4

          value=”server=localhost;database=pubs;uid=sa;pwd=”>

5

   </appSettings>

6

</configuration>


다음으로 아래의 코드를 13-2.aspx 페이지에 작성합니다.


1

<%@ Page Language="C#" %>

2

<%@ Import Namespace="System.Data" %>

3

<%@ Import Namespace="System.Data.SqlClient" %>

4

<html>

5

  <head>

6

    <title>Web.coonfig</title>

7

    <script language="C#" runat="server">

8

    void Page_Load(object sender, EventArgs e) {

9

         string cnStr = ConfigurationManager.AppSettings["connectString"];

10

         using (SqlConnection cn = new SqlConnection(cnStr)) {

11

            string query = "SELECT * FROM authors";

12

            SqlCommand cmd = new SqlCommand(query, cn);

13

                                     

14

            SqlDataAdapter adp = new SqlDataAdapter(cmd);

15

            DataSet ds = new DataSet();

16

            adp.Fill(ds);

17

                                    

18

            grid1.DataSource = ds;

19

            grid1.DataBind();

20

                                     

21

            cmd.Dispose();

22

            adp.Dispose();

23

        }

24

   }

25

   </script>

26

 <body>

27

  <form id="form1" runat="server">

28

    <asp:DataGrid id="grid1" runat="server">

29

    </asp:DataGrid>

30

  </form>

31

 </body>

32

</html>


9번 라인의 코드를 보면 cnStr이라는 변수에 ConfigurationSettings 클래스의 AppSettings 컬렉션에서 connectString이라는 키가 갖는 값을 대입하고 있습니다. 이 connectString 키는 앞서 Web.config에서 작성해 주었던 키 값이었지요.


이 키는 데이터베이스에 대한 연결 문자열을 값으로 가지고 있었으므로 cnStr 변수에는 해당 키의 값인 데이터베이스 연결 문자열이 저장됩니다. 따라서 10번 라인에서는 cnStr 변수에 대입된 연결 문자열을 이용하여 SqlConnection 클래스 객체를 생성하고 있습니다. 나머지 코드는 자주 보아왔던 코드이므로 코드에 대한 자세한 설명은 생략하도록 하겠습니다. 예제의 실행 결과는 아래 그림과 같습니다.

사용자 삽입 이미지

이상으로 Web.config 파일의 각종 섹션들에 대해 알아보았습니다. 지금까지 보아온 것과 같이 이들 섹션들은 ASP.NET 웹 응용 프로그램의 실행을 개발자의 용도에 따라 제어할 수 있도록 구성되어 있으므로 각 섹션들의 용도와 사용법을 올바르게 파악해 두는 것이 좋습니다.


특히 일부 설정의 경우는 ASP.NET 웹 응용 프로그램의 성능에도 중요한 영향을 미치므로 웹 응용 프로그램이나 웹 서버의 성능 등을 고려하여 적절한 옵션을 선택하는 것도 매우 중요한 요소가 될 것입니다.

좋은정보가 되셨다면 아래 한번 클릭해주세요^^


댓글