lecture Home > ASP.NET 2.0 > Taeyo.NET - ASP.NET 2.0

Taeyo.NET - ASP.NET 2.0

   °­Á ÃÖÃÊ ÀÛ¼ºÀÏ : 2007³â 02¿ù 05ÀÏ
   °­Á ÃÖÁ¾ ¼öÁ¤ÀÏ : 2007³â 02¿ù 05ÀÏ

   °­Á ÀÐÀ½ ¼ö : ȸ

   ÀÛ¼ºÀÚ : Taeyo(±è Å¿µ)
   ÆíÁýÀÚ : Taeyo(±è Å¿µ)

   °­Á Á¦¸ñ : .NET 2.0¿¡¼­ ³ª¸¸ÀÇ Configuration ¸¸µé±â

°­Á Àü Å¿ÀÀÇ Àâ´ã>

»çÀÌÆ®¸¦ ½ÃÀÛÇÑ Áöµµ ¾î´Àµ¡ 10³â°¿¡ À̸£¸£°í Àֳ׿ä. ±× »çÀÌ Àúµµ ³ªÀ̸¦ ¸¹ÀÌ ¸Ô¾î¹ö·È½À´Ï´Ù. óÀ½ ½ÃÀÛÇÒ ¶§´Â ¿­Á¤µµ ³ô¾Ò°í, ü·Âµµ »ó´çÇߴµ¥.. 10³âÀ̶õ ¼¼¿ùÀº Àú¸¦ ¸¹ÀÌ ´Ä°Ô(?) ¸¸µé¾ú³×¿ä ¤¾¤¾

ÇÏÁö¸¸, ¿­Á¤Àº ¾ÆÁ÷ ³²¾ÆÀÖ½À´Ï´Ù. ºñ·Ï ¾÷µ¥ÀÌÆ®°¡ ´Ê´Ù ÇÏ´õ¶óµµ ¸»ÀÔ´Ï´Ù.
Àú¿¡°Ô ÈûÀ» ÁÖ¼¼¿ä ^^ ¿©·¯ºÐÀÇ °Ý·Á´Â Á¦°Ô Å« ÈûÀÌ µË´Ï´Ù. ¤Ì¤Ì

It ain't over 'til it's over - ¿µÈ­ [·ÏŰ] Áß¿¡¼­ -


ASP.NET·Î °³¹ßÇÏ´Â ¸¹Àº °³¹ßÀÚ ºÐµéÀÌ ±¸¼º Á¤º¸ ÆÄÀÏÀÎ web.config ÆÄÀÏ¿¡ ¾î´À Á¤µµ Àͼ÷ÇØ ÀÖÀ» °ÍÀ̶ó »ý°¢ÇÕ´Ï´Ù. ´Ùµé ¾Æ½Ã´Ù½ÃÇÇ, ÀÌ ÆÄÀÏÀº À¥ »çÀÌÆ®ÀÇ ´Ù¾çÇÑ ±¸¼º Á¤º¸µéÀ» ÀúÀåÇØ³õ´Â ¿ªÇÒÀ» ÇÏÁÒ. µ¥ÀÌÅͺ£À̽º ¿¬°á ¹®ÀÚ¿­(ÁÖ·Î)ºÎÅÍ À¥ »çÀÌÆ®ÀÇ ´Ù¾çÇÑ ¼³Á¤µéÀ» ÀÌ ÆÄÀÏ¿¡ ÀúÀåÇØ ³õ°ï Çϴµ¥¿ä. À̹ø °­Á¿¡¼­´Â ÀÌ ±¸¼º ÆÄÀÏ¿¡ ¿ì¸®¸¸ÀÇ »ç¿ëÀÚ Á¤ÀÇ ±¸¼º ¼½¼ÇÀ» º°µµ·Î Á¦ÀÛÇÏ¿© ±¸¼ºÁ¤º¸µéÀ» Á÷°üÀûÀ¸·Î ´Ù·ç´Â ¹æ¹ý¿¡ ´ëÇØ ¼³¸íÇϰíÀÚ ÇÕ´Ï´Ù.

±×·¯´Ï±ñ, ¿¹¸¦ µé¸é ¸»ÀÔ´Ï´Ù. ¿¹Àü¿¡´Â ´Ù¾çÇÑ ¼³Á¤ Á¤º¸µéÀ» ÁÖ·Î <appSettings> ¿µ¿ª¿¡ ÁÖ¿í ³ª¿­ÇÏ´Â ÇüŸ¦ ¸¹ÀÌ ½á¿Ô´Âµ¥¿ä. À̰ÍÀÌ ¹¹ ±×·±´ë·Î ±¦Âú±â´Â Çß½À´Ï´Ù¸¸, ¼³Á¤ Á¤º¸°¡ ¼ö½Ê °³ ÀÌ»ó¿¡ À̸£´Â °æ¿ì¿¡´Â °ü¸®°¡ ¿ëÀÌÇÏÁö ¾Ê´Ù´Â ´ÜÁ¡ÀÌ ÀÖ¾ú½À´Ï´Ù(Àú¸¸ ±×·¸°Ô ´À³¤ °ÍÀº ¾Æ´Ï¾ú°ÚÁÒ?). ±×·ìÀ¸·Î ¹­ÀÓ¾øÀÌ ÀÏ·Ä·Î ÁÖ·ç·è ³ª¿­µÇ´Â ÇüÅÂÀÌ´Ù º¸´Ï º¸±â¿¡µµ, °ü¸®Çϱ⿡µµ ±×´ÙÁö Á÷°üÀûÀÌÁö ¾Ê¾Ò´Ù´Â °ÍÀÌÁÒ. ´ÙÀ½Ã³·³ ¸»ÀÔ´Ï´Ù.

<configuration>
  
<appSettings>
    
<add key="ConnectionStr" value="server=(local);database=A;uid=siteUser;pwd=xx" />
    <
add key="MailTemplate" value="/Users/MailTemplate.htm" />
    <
add key="MailServer" value="100.100.100.100" />
    <
add key="MailServerPort" value="25" />
    <
add key="FileDownloadVPath" value="/Download/Files" />
    ¡¦ ±âŸ µîµîÀÇ ¼³Á¤ÀÌ ¼ö½Ê °³~~ ¡¦
</appSettings>

¹°·Ð, ÀÌ·¸°Ô »ç¿ëÇÏ´Â °ÍÀÌ ¹º°¡ Å©°Ô ¾È ÁÁÀº °ÍÀº ¾Æ´Õ´Ï´Ù¸¸, °¡µ¶¼º Ãø¸é°ú °ü¸® Ãø¸é¿¡¼­ ±×´ÙÁö ÁÁÁö ¾Ê´Ù´Â(ÀÌ·¸°Ô ¸»Çϸé À¯¼ö¼®´ÔÀÌ µýÁö¸¦ °É ¼öµµ ÀÖ°ÚÁö¸¸ ¤¾¤¾¤¾)¡¦

ÇØ¼­, .NET 1.x ½ÃÀý¿¡µµ ÀÌ·¯ÇÑ ±¸¼ºÁ¤º¸ ¼½¼ÇÀ» ´ÙÀ½°ú °°ÀÌ Á÷°üÀûÀ¸·Î ºÐ·ùÇØ¼­ ÀÛ¼ºÇÏ´Â °æ¿ì°¡ ¸¹¾Ò´Âµ¥¿ä. ÀÌ´Â È®½ÇÈ÷ Á÷°üÀûÀÎ ±¸¼ºÀ» °¡Áú ¼ö ÀÖ´Ù´Â ÀåÁ¡ÀÌ ÀÖ½À´Ï´Ù¸¸, À̸¦ À§Çؼ­ Ãß°¡ÀûÀ¸·Î Configuration °ü·Ã Ŭ·¡½º¸¦ °³¹ßÇØ¾ß ÇÑ´Ù´Â ´ÜÁ¡µµ ÀÖ½À´Ï´Ù.

<configuration>
  
<configSections>
    
<sectionGroup name="TaeyoSite">
      
<section name="Mail" type="System.Configuration.DictionarySectionHandler, 
        System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
 />
    </
sectionGroup>
  
</configSections>

  
<!-- Å¿À »çÀÌÆ® Àü¿ë ±¸¼º ¼½¼Ç -->
  
<TaeyoSite>
    
<Mail>
      
<add key="MailTemplate" value="/Users/MailTemplate.htm" />
      <
add key="MailServerPort" value="25" />
      <
add key="MailServer" value="192.168.0.2" />
    </
Mail>
  
</TaeyoSite>

Ãß°¡ÀûÀÎ Configuration °ü·Ã Ŭ·¡½º¶ó°í ¸»ÇÏ´Ï ¹º°¡ Á» ¸»ÀÌ ÀÌ»óÇϳ׿ä. Á¤È®È÷ ¸»ÇÏÀÚ¸é, System.Configuration.IConfigurationSectionHandler ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÏ´Â »ç¿ëÀÚ Á¤ÀÇ(custom) ±¸¼º ¼½¼Ç 󸮱⸦ Á¦ÀÛÇØ¾ß ÇÕ´Ï´Ù Web.config ÆÄÀÏ¿¡ ¿ì¸® ¸Ú´ë·Î Ãß°¡ÇسõÀº XML ±¸Á¶¸¦ ÀÌÇØ ¹× ºÐ¼®ÇÒ ¼ö Àִ ó¸®±â¸¦ ¸»ÀÌÁÒ(¾Æ~ ¸»ÀÌ ³Ê¹« ±æ°í ¾î·Æ³×¿ä ¤Ì¤Ì).. ±Ùµ¥, ±× Ŭ·¡½º¸¦ ÀÛ¼ºÇÏ´Â °ÍÀÌ ¾à°£(?) ÇÇ°ï ³»Áö º¹ÀâÇϱ⿡ °³¹ßÀÚÀÇ ±ÍÂ÷´ÏÁòÀÌ ¹ßµ¿ÇÏ¿©, "º°µµ ¼½¼ÇÀº ¹«½¼~ ±×³É <appSetting>¸¦ ÀÌ¿ëÇÏÀÚ"¶ó°í ÇÏ°Ô ¸¸µé¾ú¾úÁÒ. ¤¾¤¾ (»¹ÂâÇÏ¸é °Á ¿ô½À´Ï´Ù?)

¾Æ¾Æ! ¹°·Ð, ±âÁ¸¿¡µµ System.Configuration.DictionarySectionHandler¿Í °°ÀÌ ±âº»À¸·Î Á¦°øµÇ´Â 󸮱⸦ »ç¿ëÇØ¼­ ±¸¼ºÀ» ÇÒ ¼öµµ ÀÖ±ä Çß½À´Ï´Ù¸¸(»ç½Ç, À§ÀÇ ¿¹°¡ ¹Ù·Î ±×¸¦ »ç¿ëÇÑ ¿¹ÀÔ´Ï´Ù), ÀÌ´Â XML Æ÷¸ËÀÌ µü Á¤ÇØÁ® Àֱ⿡ ¿ì¸®°¡ ¿øÇÏ´Â ÇüÅ·ΠXMLÀ» »ç¿ëÇÒ ¼ö ¾ø´Ù´Â ´ÜÁ¡ÀÌ ÀÖÁÒ. À§¿¡¼­ º¸ÀÌ´Ù½ÃÇÇ, ±¸¼ºÀÇ ½ÃÀÛ(<TaeyoSite>)Àº ±×·²½ÎÇÏÁö¸¸, ½ÇÁ¦ °ª ¼³Á¤Àº ¿©ÀüÈ÷ <add>¸¦ ÀÌ¿ëÇØ¼­ ±¸¼ºÇÏ´Â °ÍÀ» º¼ ¼ö ÀÖ½À´Ï´Ù. Á» ´õ ³ªÀº ±¸Á¶¶ó¸é ´ÙÀ½°ú °°Àº °ÍÀÌ ¾Æ´Ò±î¿ä? ¹°·Ð, ÀÌ °ßÇØ´Â Áö±ØÈ÷ ÁÖ°üÀûÀÏ ¼ö ÀÖ½À´Ï´Ù¸¸ ¸»ÀÔ´Ï´Ù.

<configuration>
  
<site title="Taeyo.NET">
    
<mail server="192.168.0.2" template="/Users/MailTemplate.htm" port="25" />
  </
site>
  ...

±×·±µ¥! ÀÌ·¸°Ô ±¸¼ºÇÏ°Ô µÇ¸é, DictionarySectionHandler¿Í °°ÀÌ ±âº»À¸·Î Á¦°øµÇ´Â 󸮱â·Î´Â ºÒ°¡´ÉÇϰí, À§ÀÇ XML ±¸Á¶¸¦ ºÐ¼®Çϱâ À§ÇÑ º°µµÀÇ ±¸¼º 󸮱⸦ Á¦ÀÛÇØ¾ß ÇÏ´Â »óȲ¿¡ À̸£°Ô µË´Ï´Ù. ½½½½ ±ÍÂú¾ÆÁöÁÒ? ½ÉÁö¾î´Â °­Á¸¦ Àд °Íµµ ½½½½ ±ÍÂú¾ÆÁöÁö ¾Ê³ª¿ä? ÇÏÇÏ!! µü °É·È¾î~~

±×·¡¼­, .NET 2.0¿¡¼­´Â ÀÌ·¯ÇÑ Ã³¸®±â¸¦ ½±°Ô °³¹ßÇÒ ¼ö ÀÖµµ·Ï µ½´Â Ŭ·¡½ºµéÀÌ Ãß°¡µÇ¾ú½À´Ï´Ù. ÇØ¼­, ÀÚü 󸮱⸦ °³¹ßÇÏ´Â °ÍÀÌ »ó´çÈ÷ °£´ÜÇÏ°Ô µÇÁÒ. À̹ø °­Á¿¡¼­´Â ±×¿Í °ü·ÃµÈ Ŭ·¡½º¸¦ ¼Ò°³Çϰí, À̸¦ ÀÌ¿ëÇØ ¸Å¿ì ½±°Ô(?) ¿ì¸®¸¸ÀÇ ±¸¼º ¼½¼ÇÀ» ÀÛ¼ºÇÏ¿© web.config ÀÇ °¡µ¶¼ºÀ» ³ôÀÌ´Â ¹æ¹ýÀ» ¼³¸í µå¸®°íÀÚ ÇÕ´Ï´Ù.

ConfigurationSection Ŭ·¡½º

.NET 2.0¿¡¼­ »õ·ÎÀÌ Ãß°¡µÈ ConfigurationSection Ŭ·¡½º. ÀÌ Ä£±¸°¡ ¹Ù·Î »ç¿ëÀÚ ÁöÁ¤ ¼½¼Ç Çü½ÄÀ» ±¸ÇöÇÒ ¼ö ÀÖ°Ô Çϴ Ŭ·¡½ºÀÔ´Ï´Ù. ¸¸ÀÏ, ¿©·¯ºÐÀÌ ´ÙÀ½°ú °°Àº XML ±¸Á¶¸¦ web.config¿¡¼­ »ç¿ëÇÏ°í ½Í´Ù¸é,

<configuration>
  
<configSections>
    
<section name="mySite" type="SiteSection"/>
  </
configSections>

  
<mySite title="Taeyo.NET" MailServerIP="61.100.xx.xx" MailServerPort="25"
         MailTemplate="/temps/mail.tmp" />
  </
mySite>

´ÙÀ½°ú °°Àº ½ÄÀ¸·Î 󸮱â Ŭ·¡½º¸¦ ÀÛ¼ºÇÏ½Ã¸é µË´Ï´Ù. (ÀÛ¼ºÇÑ Ã³¸®±â´Â À§¿¡¼­ º¸ÀÌ´Â °Í°ú °°ÀÌ <configSections>ÀÇ ÇÏÀ§·Î µî·ÏÇØ ÁÖ¾î¾ß ÇÕ´Ï´Ù)

public class SiteSection : ConfigurationSecqtion
{
    
public string Title { ... }
    
public string MailServerIP { ... }
    
public string MailServerPort { ... }
    
public string MailTemplate { ... }
    ...
}

°³¹ß ±ÔÄ¢Àº ¸Å¿ì °£´ÜÇÕ´Ï´Ù. 󸮱â Ŭ·¡½º´Â ¹Ýµå½Ã ConfigurationSection¸¦ »ó¼ÓÇÏ¿© ±¸ÇöµÇ¾î¾ß Çϸç, XMLÀÇ °¢ ¾îÆ®¸®ºäÆ®µéÀº Ŭ·¡½ºÀÇ ¼Ó¼ºÀ¸·Î¼­ Á¤ÀÇÇÏ¸é µË´Ï´Ù. ´Ù¸¸, Ãß°¡ÀûÀ¸·Î °¢ ¼Ó¼ºµéÀÌ [ConfigurationProperty] ¾îÆ®¸®ºäÆ®¸¦ °¡Á®¾ß ÇÑ´Ù´Â °ÍÀ» ±â¾ïÇϼ¼¿ä. ´ÙÀ½Àº ½ÇÁ¦·Î »ó±â XMLÀ» À§ÇÑ Ã³¸®±â Ŭ·¡½ºÀÇ ÄÚµåÀÔ´Ï´Ù.

public class SiteSection : ConfigurationSection
{
    [ConfigurationProperty(
"title", DefaultValue="Taeyo.NET")]
    
public string Title
    {
        
get return (string)base["title"]}
        
set base["title"= value; }
    }

    [ConfigurationProperty(
"mailServerIP")]
    
public string MailServerIP {
        
get return (string)base["mailServerIP"]}
        
set base["mailServerIP"= value; }
    }

    [ConfigurationProperty(
"mailServerPort")]
    
public string MailServerPort {
        
get return (string)base["mailServerPort"]}
        
set base["mailServerPort"= value; }
    }

    [ConfigurationProperty(
"mailTemplate")]
    
public string MailTemplate {
        
get return (string)base["mailTemplate"]}
        
set base["mailTemplate"= value; }
    }
}

ConfigurationProperty ¾îÆ®¸®ºäÆ®¿¡ »ç¿ëµÇ´Â À̸§Àº ½ÇÁ¦ XML¿¡¼­ÀÇ °¢ ¾îÆ®¸®ºäÆ® ¸í°ú µ¿ÀÏÇØ¾ß ÇÑ´Ù´Â Á¡À» ÁÖÀÇÇÏ½Ã¸é µÇ±¸¿ä. ½ÇÁ¦ ¼Ó¼º ¾È¿¡¼­ÀÇ get, set ¿ë °ªÀº base["xml ¾îÆ®¸®ºäÆ® ¸í"];°ú °°ÀÌ Á¢±ÙÇÏ½Ã¸é µË´Ï´Ù. ¸Å¿ì °£´ÜÇÏÁÒ?

´Ù¸¸, ÀÌÀüÀÇ XML ±¸Á¶¸¦ »ìÆìº¸¸é Mail°ú °ü·ÃµÈ Á¤º¸µéÀÌ 3°³ Á¤µµ°¡ Àִµ¥¿ä. À̵éÀ» ÇÏÀ§ ³ëµå·Î¼­ ºÐ¸®ÇÏ¸é ´õ¿í ±¸Á¶°¡ ÀÌ»Ü °Í °°Áö ¾Ê³ª¿ä? ´ÙÀ½Ã³·³ ¸»ÀÔ´Ï´Ù.

<mySite title="Taeyo.NET">
  
<mail server="192.168.0.2" template="/Users/MailTemplate.htm" port="25" />
</
mySite>

±×·¸ÁÒ? ÀÌ·¸°Ô XMLÀ» ±¸¼ºÇÏ´Â °ÍÀÌ º¸´Ù Á÷°üÀûÀÏ °ÍÀÔ´Ï´Ù. ±×·¸´Ù¸é, ÀÌ·± ±¸Á¶¸¦ À§Çؼ­¶ó¸é 󸮱⸦ ¾î¶»°Ô ±¸¼ºÇØ¾ß ÇÒ±î¿ä? ÀÌ ¶ÇÇÑ ¾î·Á¿ï °ÍÀÌ ¾ø½À´Ï´Ù. ÇÏÀ§ ³ëµå¸¦ À§Çؼ­´Â ConfigurationElement Ŭ·¡½º¸¦ »ó¼ÓÇÏ´Â ÇÏÀ§ Ŭ·¡½º¸¦ Á¤ÀÇÇÏ¸é µË´Ï´Ù. ´ÙÀ½Àº ±×·¸°Ô Á¤ÀÇÇÑ Å¬·¡½ºÀÇ ÇÁ·ÎÅä ŸÀÔÀÔ´Ï´Ù.

public class SiteSection : ConfigurationSection
{
    
public string Title { ... }
    
public MailServerElement Mail { ... }

    
public class MailServerElement : ConfigurationElement
    {
        
public string Server { ... }
        
public string Port { ... } 
        
public string Template { ... }
    }
}

ÀÚ½Ä ³ëµåÀÎ mailÀ» À§Çؼ­ ÇÏÀ§ Ŭ·¡½º¸¦ ±¸¼ºÇØ¾ß Çϴµ¥¿ä. À̸¦ À§Çؼ­´Â ConfigurationElement¸¦ »ó¼ÓÇϴ Ŭ·¡½º¸¦ ÀÛ¼ºÇÏ¸é µË´Ï´Ù. ±×¸®°í, mailÀÇ °¢ xml ¾îÆ®¸®ºäÆ®¿¡ ´ëÇØ¼­´Â Ŭ·¡½ºÀÇ ¼Ó¼ºÀ¸·Î ÀÛ¼ºÇÏ½Ã¸é µÇ´Â °ÍÀÌÁÒ. ±ÔÄ¢Àº °£´ÜÇÕ´Ï´Ù. "ÀÚ½Ä ³ëµå¸¦ À§Çؼ­´Â ConfigurationElement¸¦ »ó¼ÓÇÏ´Â ÇÏÀ§ Ŭ·¡½º¸¦ ÀÛ¼ºÇÏ¸é µÈ´Ù!" ÀÌ°Ô ÀüºÎÀÔ´Ï´Ù. ^^ (Ŭ·¡½ºÀÇ ¸íĪÀº ±×´ÙÁö Áß¿äÇÏÁö ¾Ê½À´Ï´Ù. ÀÌ´Â ³»ºÎÀûÀÎ Çü½ÄÀÏ »ÓÀ̴ϱî¿ä)

ÀÚ. ±×·³ ½ÇÁ¦·Î Çѹø ¿¹Á¦¸¦ ¿Ï¼ºÇØ º¸µµ·Ï ÇϰڽÀ´Ï´Ù. »õ·Î¿î À¥ »çÀÌÆ®¸¦ Çϳª ¸¸µå½Ã°í(ȤÀº, ±âÁ¸ÀÇ ¿©·¯ºÐÀÇ À¥ »çÀÌÆ®¿¡´Ù°¡) »õ·Î¿î Ŭ·¡½º¸¦ Çϳª Ãß°¡Çϵµ·Ï ÇϰڽÀ´Ï´Ù. Ŭ·¡½º´Â ´ç¿¬È÷ App_Code Æú´õ¿¡ ³õ¿©Á®¾ß ÇϰÚÁÒ? Àú´Â ´ÙÀ½°ú °°ÀÌ SiteConfig ¶ó´Â À̸§ÀÇ C# Ŭ·¡½º¸¦ Ãß°¡Çß½À´Ï´Ù.

±×¸®°í, ¿ì¸®´Â ´ÙÀ½°ú °°Àº ±¸¼º Çü½ÄÀ» °¡Áú ¿¹Á¤À̹ǷΠÀÌ¿¡ ¸Âµµ·Ï handler(󸮱â) Ŭ·¡½º Äڵ带 ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºÇϵµ·Ï ÇÕ´Ï´Ù.

±¸¼º ¼½¼Ç

<mySite title="Taeyo.NET">
    
<mail server="192.168.0.2" template="/Users/MailTemplate.htm"
      port
="25" />
</
mySite>

Ŭ·¡½º ÄÚµå

public class SiteConfig : ConfigurationSection
{
    [ConfigurationProperty(
"title", DefaultValue="Taeyo.NET")]
    
public string Title
    {
        
get return (string)base["title"]}
        
set base["title"= value; }
    }

    [ConfigurationProperty(
"mail", IsRequired=true)]
    
public MailServerElement Mail
    {
        
get return (MailServerElement)base["mail"]}
    }

    
public class MailServerElement : ConfigurationElement
    {
        [ConfigurationProperty(
"server", DefaultValue "")]
        
public string Server
        {
            
get return (string)base["server"]}
            
set base["server"= value; }
        }

        [ConfigurationProperty(
"port", DefaultValue "")]
        
public string Port
        {
            
get return (string)base["port"]}
            
set base["port"= value; }
        }

        [ConfigurationProperty(
"template", DefaultValue "")]
        
public string Template
        {
            
get return (string)base["template"]}
            
set base["template"= value; }
        }
    }
}

Ŭ·¡½º°¡ ¿Ï¼ºµÇ¾úÀ¸¸é, ÇØ´ç Ŭ·¡½º¸¦ web.configÀÇ <configSections> ¼½¼Ç¿¡ µî·Ï ÇÕ´Ï´Ù. ÀÌ Ã³¸®±â Ŭ·¡½º¸¦ <configSections>¿¡ µî·ÏÇØ¾ß¸¸ ¿Ã¹Ù¸£°Ô ¿ì¸®°¡ Á¤ÀÇÇÑ Xml ±¸Á¶¸¦ ÀÌÇØÇÒ ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  
<configSections>
    
<section name="mySite" type="SiteConfig"/>
  </
configSections>

  
<mySite title="Taeyo.NET">
    
<mail server="192.168.0.2" template="/Users/MailTemplate.htm"
          port
="25" />
  </
mySite>
...

´õºÒ¾î, ¿ì¸®¸¸ÀÇ ±¸¼º Á¤º¸(XML)µµ À§¿Í °°ÀÌ web.config ÆÄÀÏ¿¡ ±â·ÏÇÕ´Ï´Ù.

À̰ÍÀ¸·Î ¿Ï¼ºÀÌ µÇ¾ú½À´Ï´Ù. ^^

¿©·¯ºÐÀº ÀÌÁ¦ ´ÙÀ½°ú °°Àº Äڵ带 ÀÌ¿ëÇØ¼­ ¿øÇÒ °æ¿ì, ¾îµð¿¡¼­³ª ¿ì¸®¸¸ÀÇ ±¸¼º Á¤º¸¸¦ ½±°Ô Àоî¿Ã ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù.

SiteConfig Settings =
        
(SiteConfig)WebConfigurationManager.GetSection("mySite");

±×·¯³ª, Á» ´õ È¿À²ÀûÀ¸·Î À̸¦ »ç¿ëÇϱâ À§Çؼ­´Â »çÀÌÆ® Àü¿ª ¼Ó¼ºÀ¸·Î À̸¦ Á¦°øÇÏ´Â ¹æ¹ýµµ »ý°¢ÇØ º¼ ¼ö ÀÖ½À´Ï´Ù.

¿¹¸¦ µé¸é, ¸¹Àº ºÐµéÀÌ À¥ »çÀÌÆ®¿¡ Globals ¶ó´Â Á¤Àû Ŭ·¡½º¸¦ ¸¸µé°í, ±× Ŭ·¡½º¸¦ ÅëÇØ¼­ »çÀÌÆ® Àü¿ªÀûÀÎ °øÅë Á¤º¸µéÀ» Á¦°øÇϰí ÀÖÀ»ÅÙµ¥¿ä(¾ÆÁ÷ ±×·¸°Ô ±¸¼ºÇÏÁö ¾ÊÀ¸½Å ºÐµéÀº À̹ø ±âȸ¿¡ Çѹø ÇØ º¸¼¼¿ä ^^). ±× Ŭ·¡½º¿¡ ÀÌ ¼³Á¤ Á¤º¸µµ ¼Ó¼ºÀ¸·Î¼­ ³ëÃâÇϸé Á» ´õ ÆíÇÏ°Ô À¥ ÆäÀÌÁöµé¿¡¼­ ±¸¼º Á¤º¸¿¡ Á¢±ÙÀÌ °¡´ÉÇÒ °ÍÀÔ´Ï´Ù. ¸»ÀÌ Á» º¹ÀâÇÏ°Ô ´À²¸Áø´Ù¸é, Çѹø °°ÀÌ ÇØº¼±î¿ä?

´ÙÀ½°ú °°ÀÌ App_Code Æú´õ¿¡ Globals ¶ó´Â Ŭ·¡½º¸¦ Çϳª Ãß°¡ÇØ º¸µµ·Ï Çϼ¼¿ä. ±×¸®°í, ´ÙÀ½°ú °°ÀÌ Äڵ带 ÀÛ¼ºÇϵµ·Ï ÇÕ´Ï´Ù.

using System;
using 
System.Configuration;
using 
System.Web.Configuration;

/// <summary>
/// GlobalsAC GlobalsÀÇ ¿ä¾à ¼³¸íÀÔ´Ï´Ù.
/// </summary>
public static class Globals
{
    
public readonly static SiteConfig Settings =
        
(SiteConfig)WebConfigurationManager.GetSection("mySite");
}

¾ÆÁÖ °£´ÜÇÏÁÒ? À̰ÍÀÌ ÀüºÎÀÔ´Ï´Ù. ´Ù¸¸, WebConfigurationManager Ŭ·¡½º¸¦ ÀÌ¿ëÇϱâ À§Çؼ­´Â System.Web.Configuration ³×ÀÓ½ºÆäÀ̽º¸¦ Ãß°¡ÇØ Áà¾ß ÇÕ´Ï´Ù. ±×°ÍÀ» ÀØÁö ¸»µµ·Ï Çϼ¼¿ä ^^

ÀÚ. ÀÌÁ¦ ¾ó¸¶³ª °£ÆíÇÏ°Ô ¿ì¸®¸¸ÀÇ »çÀÌÆ® ±¸¼º Á¤º¸¸¦ ÀÌ¿ëÇÒ ¼ö ÀÖ´ÂÁö Çѹø Å×½ºÆ®¸¦ ÇØº¸°Ú½À´Ï´Ù. Default.aspx.cs ÆÄÀÏ¿¡ ´ÙÀ½°ú °°Àº Äڵ带 ÀÛ¼ºÇØ º¸¼¼¿ä ^^

using System.Configuration;
using 
System.Web;
using 
System.Web.Security;
using 
System.Web.UI;
using 
System.Web.UI.WebControls;
using 
System.Web.UI.WebControls.WebParts;
using 
System.Web.UI.HtmlControls;
using 
System.Web.Configuration;

public 
partial class _Default : System.Web.UI.Page 
{
    
protected void Page_Load(object sender, EventArgs e)
    {
        Response.Write(
"<br>title : " + Globals.Settings.Title);
        
Response.Write("<br>mail(server) : " + Globals.Settings.Mail.Server);
        
Response.Write("<br>mail(port) : " + Globals.Settings.Mail.Port);
        
Response.Write("<br>mail(template) : " + Globals.Settings.Mail.Template);
    
}
}

Globals.Settings¿Í °°ÀÌ ¿ì¸®ÀÇ ±¸¼º Á¤º¸ Ŭ·¡½º¿¡ Á¢±ÙÀÌ °¡´ÉÇÑ °ÍÀ» º¼ ¼ö ÀÖ°í, Settings ÀÇ ¼Ó¼ºÀ» ÅëÇØ¼­ °¢°¢ÀÇ XML ¾îÆ®¸®ºäÅÍ Á¤º¸(¸ÞÀϼ­¹ö, Æ÷Æ®, ÅÛÇø´¸í µî)¸¦ ½±°Ô ¾ò¾î¿Ã ¼ö ÀÖ´Â °ÍÀ» º¸½Ç ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù.

´ÙÀ½Àº °á°ú È­¸éÀÔ´Ï´Ù.

¾î¶²°¡¿ä? »ý°¢º¸´Ù ½±°í °£ÆíÇÏÁö ¾Ê³ª¿ä?

¸¸ÀÏ, ¿©·¯ºÐÀÇ web.config ÆÄÀÏÀÌ ´ë´ÜÈ÷ º¹ÀâÇÑ ±¸¼ºÀ» °¡Áö°í ÀÖ´Ù¸é ÀÌ¿Í °°ÀÌ »ç¿ëÀÚ Á¤ÀÇ ±¸¼º Á¤º¸ ¼½¼ÇÀ» ¸¸µé¾îº¸´Â °Íµµ ³ª»ÚÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù. ^^ ¹°·Ð, ÀÚü 󸮱â Ŭ·¡½º¸¦ ¸¸µå´Â °ÍÀÌ ¿©ÀüÈ÷ º¹ÀâÇÏ°Ô ´À²¸Áö´Â µ¶ÀÚ¶ó¸é ¿¹Àü´ë·Î <appSettings> ¼½¼ÇÀ» ÀÌ¿ëÇØµµ ¹¹ ¹®Á¦´Â ¾ø½À´Ï´Ù¸¸ ¸»ÀÔ´Ï´Ù. ¤¾¤¾

°¨»çÇÕ´Ï´Ù. ^^

 

°­Á ¸ñ·ÏÀ¸·Î..