lecture Home > ASP.NET > Taeyo's ASP.NET

Taeyo's ASP.NET

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

   °­Á ÀÐÀ½ ¼ö : ȸ

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

   °­Á Á¦¸ñ : [Áß±Þ] HttpModule ±¸Çö ¹× Àû¿ë

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

À̹ø °­Á´ Àú¹ø ASP.NET ³»ºÎ »ìÆìº¸±â °­Á¿¡ ÀÌ¾î °¡·Îä±â ÇÊÅ͸¦ ±¸ÇöÇÏ´Â ¿¹ÀÔ´Ï´Ù. Áß±ÞÀûÀÎ ÁÖÁ¦ÀÌÁö¸¸ ±×·¸°Ô ¾î·ÆÁö ¾ÊÀ¸´Ï ¿ì¸® ¸ðµÎ Èû³»¼­ ¹Ù¦~ ´Þ·Áº¸ÀÚ±¸¿ä~~ ^^;


ASP.NET HTTP ·±Å¸ÀÓÀº °³Á¦ ÁöÇâÀûÀ̰í, À̺¥Æ® ÁöÇâÀûÀÎ ÇϺα¸Á¶¸¦ ³ëÃâÇϰí Àֱ⿡, ¿äû°ú ÀÀ´ä »çÀÌ¿¡ Âü¿©ÇÏ´Â ¾îÇø®ÄÉÀ̼ÇÀ» ½±°Ô(?) ÀÛ¼ºÇÒ ¼ö ÀÖ°Ô ÇØ ÁÝ´Ï´Ù. Áï, ASP.NET ·±Å¸ÀÓÀÇ ¿©·¯ ÇÁ·Î¼¼½º »çÀÌ¿¡ ¿ì¸®°¡ Á¦ÀÛÇÑ Æ¯º°ÇÑ ±â´ÉµéÀ» ³¢¿ö ³Ö¾î ±¸µ¿½Ãų ¼ö ÀÖ´Ù´Â °ÍÀÌÁÒ. ±×¸®°í, ±×°ÍÀ» °¡´ÉÇÏ°Ô ÇÏ´Â °Í Áß Çϳª°¡ À̹ø °­Á¿¡¼­ ´Ù·ê HttpModule ÀÔ´Ï´Ù.

µðÀÚÀÎ ÆÐÅÏÀÇ Ãø¸é¿¡¼­ ¹Ù¶óº¸ÀÚ¸é, HttpModuleÀº Interceptiong Filter ÆÐÅÏÀÇ ÇÑ À¯ÇüÀ̶ó ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿äûÀÇ Ã³¸® Àü°ú ÈÄ¿¡ ¼­¹öÀÇ Ã³¸® À̺¥Æ®µéÀ» °¡·Îä¾î¼­ Ãß°¡ÀûÀÎ ¾î¶² ·ÎÁ÷À» ¼öÇàÇÒ ¼ö ÀÖ°Ô ÇÏ´Â ÆÐÅÏÀ» ÀϹÝÀûÀ¸·Î Interceptiong Filter ÆÐÅÏÀ̶ó°í Çϴµ¥, HttpModule°¡ ¹Ù·Î ±×·¯ÇÑ ¿ªÇÒÀ» ¼öÇàÇÏ´Â ÇÊÅÍÀ̱⠶§¹®ÀÔ´Ï´Ù. .NET ÀÌÀü¿¡´Â ÀÌ·¯ÇÑ ÇÊÅ͸¦ Á¦ÀÛÇϱâ À§Çؼ­ C++·Î ISAPI ÇÊÅ͸¦ Á¦ÀÛÇØ¾ß Çß½À´Ï´Ù. ±×·¸±â¿¡, HTTP ¸ðµâÀº ÀÌÀüÀÇ ISAPI(Internet Services Application Programming Interface) FilterÀÇ .NET ÀÔÀåÀÇ ³í¸®ÀûÀÎ ´ëü¶ó°í º¼ ¼ö ÀÖ½À´Ï´Ù.

HttpModuleÀÇ ¿ªÇÒ ¹× ½ÇÇà ½ÃÁ¡ µî¿¡ ´ëÇØ¼­´Â ÀÌÀü °­Á¿¡¼­ ¾î´À Á¤µµ ¼³¸íÀÌ µÇ¾úÀ¸¹Ç·Î, ÀÌÁ¦´Â ½ÇÁ¦ÀûÀÎ À̾߱â·Î µé¾î°¡ º¸µµ·Ï ÇϰڽÀ´Ï´Ù. Á¶±ÝÀº ¾î·Á¿ï ¼öµµ ÀÖ´Â À̾߱âÁö¸¸, À̾߱â ÀçÁÖ²Û Å¿ÀÀÇ ½¬¿î ¼³¸íÀÌ ÀÖÀ¸´Ï °áÄÚ °Ì³ªÁö ¾Ê½À´Ï´Ù!!! ±×·¸Áö ¾Ê½À´Ï±î? -_-+ (¿ª½Ã ±×·¸Áö ¾Ê±º¿ä!)

¿ì¼± ¿©·¯ºÐÀº ±âÁ¸ÀÇ ±Ûµé ¹× À§ÀÇ ±ÛµéÀ» ÀÐÀ¸¸é¼­ ÀÌ·¸°Ô »ý°¢ÇϼÌÀ» °¡´É¼ºÀÌ ¸Å¿ì Å®´Ï´Ù.

"±×·¡¼­, HttpModuleÀ» ¸¸µé¾î¼­ ¾îµð´Ù°¡ ¾²°Ú´Ù´Â °Å¾ß? ³­ ¾ÆÁ÷µµ HttpModule¶ó´Â °ÍÀÌ ¹«¾ùÀÎÁö, ¿Ö ÇÊ¿äÇÑÁö, ±×¸®°í ¾îµð¿¡ Àû¿ëÇØ¾ß ÇÏ´Â °ÍÀÎÁö °¨ÀÌ µµÅë ¿ÀÁö ¾ÊÀ»¶ó±¸ ÇØ! Áö±Ý²¯ ±×°Å ¸ô¶ú¾îµµ ASP.NETÀ¸·Î ÇÁ·Î±×·¥ Â¥´Âµ¥ ¾Æ¹«·± ÇÁ¶óºí·³ÀÌ ¾ø¾ú´Ù±¸~"

±×·¸½À´Ï´Ù. ±×·¸´Ù¸é ÀÌÁ¦ ¸»ÀÔ´Ï´Ù. Àúµµ Àß ¸ð¸£¸é¼­ ¾Æ´Â ô ±×¸¸Çϰí, ½ÇÁ¦·Î ÀÌÇØ¸¦ µµ¿ï¸¸ÇÑ À̾߱⸦ ÇØ¾ß ÇÒ µí ÇÕ´Ï´Ù. ¾È ±×·¨´Ù°£, ¡°±×·¡, ³× µ¢ ±½´Ù!¡±¶õ ÁöźÀ» ¹ÞÀ»Áöµµ ¸ð¸£´Ï±î¿ä ^^;;

¾Æ¸¶µµ ¿©·¯ºÐÀº Global.asax¸¦ »ç¿ëÇØ º¸½Å ÀûÀÌ ÀÖÀ» °ÍÀÔ´Ï´Ù. ±âº»ÀûÀ¸·Î ±× ÆÄÀÏ ¾È¿¡´Â ´ÙÀ½°ú °°Àº À̺¥Æ®µéÀÌ ÀÖ´Â °ÍÀ» ¾Æ½Ç °ÍÀÔ´Ï´Ù.

Application_OnStart
Session_OnStart
Session_OnEnd
Application_OnEnd

ÀÌ À̺¥Æ®µéÀº asp ½ÃÀý¿¡µµ ÀÖ¾î¿Ô´ø °ÍµéÀ̱⿡ ÀÌ¹Ì ´Ùµé À̵éÀÇ ¿ªÇÒÀ» ¾Æ½Ç °ÍÀ̶ó »ý°¢ÇÕ´Ï´Ù. »çÀÌÆ®ÀÇ Ä«¿îÅ͸¦ ¸¸µé±â À§Çؼ­, ȤÀº ¹æ¹®ÀÚ Á¢¼Ó Åë°è¸¦ ¸¸µé±â À§Çؼ­ ÀÌ·¯ÇÑ À̺¥Æ®µéÀ» »ç¿ëÇØ º» °æÇèµéÀÌ ÀÖÀ¸½Ç °ÍÀÔ´Ï´Ù. ±×·¸ÁÒ?

±×¸®°í, ASP.NET¿¡¼­´Â Global.asax ÆÄÀÏÀÌ º¸À¯Çϰí ÀÖ´Â À̺¥Æ®°¡ ASP ½ÃÀýº¸´Ù ´õ ¸¹ÀÌ ÀÖ´Ù´Â °Íµµ ¾Æ½Ç °ÍÀÔ´Ï´Ù. ´çÀåÀÌ¶óµµ Global.asax ÆÄÀÏÀÇ ¼Ò½º¸¦ ¿­¾îº¸¼¼¿ä. ¾Æ¸¶µµ ´ÙÀ½°ú °°Àº À̺¥Æ®µéÀÌ ÀÖ´Â °ÍÀ» º¸½Ç ¼ö ÀÖÀ» °Å¿¹¿ä

Application_BeginRequest
Application_Error

¶ÇÇÑ, Global.asax ÆÄÀÏÀÇ ºÎ¸ð Ŭ·¡½º°¡ HttpApplicationÀÎ °Íµµ º¸½Ç ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. Áï, ÀÌ À̾߱â´Â Global.asaxµµ ±âº»ÀûÀ¸·Î ÀÌ·¯ÇÑ HttpApplication Ŭ·¡½ºÀÇ À̺¥Æ®µéÀ» ¸ðµÎ ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù´Â °ÍÀ̰ÚÁÒ? Áï, ´ÙÀ½°ú °°Àº À̺¥Æ®µéÀ» ¸»ÀÔ´Ï´Ù.

À̺¥Æ® ¼³¸í
BeginRequest »õ·Î¿î ¿äûÀÌ µé¾î¿Ã °æ¿ì ¼öÇàµÈ´Ù. ¸ðµç ¿äû¿¡ ´ëÇØ¼­ ¹Ýµå½Ã ÀϾ´Ù.
AuthenticationRequest ÀÎÁõ ¸ÞÄ¿´ÏÁòÀÌ ÇØ´ç ¿äûÀ» ÀÎÁõÇÑ °æ¿ì ÀϾ´Ù
AuthorizationRequest AuthenticationRequest¿¡ À̾, ¿äû¿¡ Çã°¡¸¦ ºÎ¿©ÇÑ °æ¿ì¿¡ ¹ß»ýÇÑ´Ù.
ResolveRequestCache Ãâ·Â ij½Ã ¸ðµâÀº ij½ÌµÈ ¿äû 󸮸¦ ½Å¼ÓÈ÷ ó¸®Çϱâ À§Çؼ­ ÀÌ À̺¥Æ®¸¦ »ç¿ëÇÑ´Ù.
AcquireRequestState °³º°ÀûÀÎ ¿äû »óŸ¦ ¾ò¾î¾ß ÇÑ´Ù´Â °ÍÀ» ¾Ë¸°´Ù.
PreRequestHandlerExecute ¿äû Çڵ鷯°¡ ½ÇÇàµÇ±â Á÷Àü¿¡ ¹ß»ýÇÑ´Ù. ÀÌ À̺¥Æ®´Â HTTP Çڵ鷯°¡ È£ÃâµÇ±â Àü¿¡ ¸¶Áö¸·À¸·Î ´Ù·ê ¼ö ÀÌ´Â À̺¥Æ®ÀÌ´Ù.
PostRequestHandlerExecute HTTP Çڵ鷯°¡ ¿äûÀ» ¸¶Ä£ µÚ ¹ß»ýÇÑ´Ù.
ReleaseRequestState ¾îÇø®ÄÉÀ̼ÇÀÌ ¿äû 󸮸¦ ¸¶ÃƱ⿡, ¿äû »óŰ¡ ÀúÀåµÇ¾î¾ß ÇÑ´Ù´Â °ÍÀ» ¾Ë¸°´Ù
UpdateRequestCache ÄÚµå 󸮰¡ ¿Ï·áµÇ¾ú°í, ÇØ´ç ÆÄÀÏÀÌ ASP.NET ij½Ã¿¡ Ãß°¡µÉ Áغñ°¡ µÇ¾úÀ½À» ¾Ë¸°´Ù.
EndRequest ¿äû¿¡ ´ëÇÑ ¸¶Áö¸· À̺¥Æ®. ¾îÇø®ÄÉÀ̼ÇÀÌ Á¾·áµÉ °æ¿ì È£ÃâµÇ´Â ¸¶Áö¸· À̺¥Æ®ÀÌ´Ù.

À§ÀÇ ¸ñ·ÏÀº ¹ß»ýÇÏ´Â ¼ø¼­¿¡ µû¸¥ °ÍÀÔ´Ï´Ù. ±×¸®°í, ¼ø¼­¾øÀÌ Æ¯Á¤ »óȲ¿¡ ¹ß»ýÇÏ´Â À̺¥Æ®µé·Î´Â ´ÙÀ½°ú °°Àº °ÍµéÀÌ ÀÖ½À´Ï´Ù.

À̺¥Æ® ¼³¸í
Error 󸮵ÇÁö ¾ÊÀº ¿¹¿Ü°¡ ¹ß»ýÇÑ °æ¿ì ÀϾ´Ù.
PreSendRequestHeaders ÀÌ´Â HTTP Çì´õ°¡ Ŭ¶óÀÌ¾ðÆ®·Î ³»·Á º¸³»±â Àü¿¡ ¹ß»ýÇÑ´Ù. À̸¦ ÅëÇØ Çì´õ¸¦ Ãß°¡, Á¦°Å, ¼öÁ¤ÇÒ ¼ö ÀÖ´Ù.
PreSendRequestContent ÀÌ´Â ÄÁÅÙÆ®¸¦ Ŭ¶óÀÌ¾ðÆ®¿¡°Ô ³»·Á º¸³»±â Á÷Àü¿¡ ¹ß»ýÇÑ´Ù. À̸¦ ÅëÇØ ÄÁÅÙÆ®¸¦ º¸³»±â Àü¿¡ ¼öÁ¤ÇÒ ¼ö ÀÖ´Ù.

ÀÌ À̺¥Æ®µéÀº Á¤È®ÇÏ°Ô ¸»ÇÏÀÚ¸é, HttpApplication Ŭ·¡½º°¡ Á¦°øÇÏ´Â À̺¥Æ®µéÀÔ´Ï´Ù. ¹°·Ð, Global.asax ÀÇ °æ¿ì´Â À§¿¡ ³ª¿­ÇÑ HttpApplication Ŭ·¡½ºÀÇ ±âº» À̺¥Æ® ¿Ü¿¡µµ Session_OnStart¿Í °°Àº °ÍµéÀ» Ãß°¡ÀûÀ¸·Î ±¸ÇöÇϰí ÀÖ±ä ÇÕ´Ï´Ù¸¸, ±âº»ÀûÀ¸·Î´Â À§¿Í °°Àº À̺¥Æ®µéÀ» ASP.NET ·±Å¸ÀÓÀ¸·ÎºÎÅÍ Á¦°ø¹Þ´Â °ÍÀÌÁÒ. ÇØ¼­, ¾îÇø®ÄÉÀÌ¼Ç °øÅëÀûÀ¸·Î À§¿¡¼­ ³ª¿­ÇÑ À̺¥Æ®µé »çÀÌ¿¡ ¾î¶² 󸮸¦ ¼öÇàÇÏ°í ½ÍÀ» °æ¿ì, Globla.asax ÆÄÀÏ ¾È¿¡ Á÷Á¢ÀûÀ¸·Î ÇÊ¿äÇÑ Äڵ带 ÀÛ¼ºÇؼ­ ¿øÇϴ ó¸®¸¦ ±¸µ¿ÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÇÏÁö¸¸, ±×·¸°Ô ó¸®ÇØ¾ß ÇÒ ÀÛ¾÷µéÀÌ ¸¹¾ÆÁö°Ô µÇ¸é, Global.asax´Â ¸Å¿ì ÁöÀúºÐÇØÁú °ÍÀ̰í, ¾÷¹«º°·Î µû·Î ÀÛ¼ºµÇ¸é ´õ ÁÁÀ» ÄÚµåµéÀÌ ÇϳªÀÇ ÆÄÀϾȿ¡ ¸ðµÎ µÚÁ×¹ÚÁ× ¼¯¾îÁú °ÍÀ̱⿡, °¡µ¶¼º Ãø¸é¿¡¼­³ª Â÷ÈÄ °ü¸® ¹× À¯Áö º¸¼ö Ãø¸é¿¡¼­µµ ¸Å¿ì ÁÁÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù.

¶ÇÇÑ, ±×·¯ÇÑ ÀÛ¾÷ÀÌ ÇöÀç Á¦ÀÛÁßÀÎ À¥ ¾îÇø®ÄÉÀ̼ǿ¡¼­¸¸ »ç¿ëµÇ¾î¾ß ÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó, ´Ù¸¥ À¥ ¾îÇø®ÄÉÀ̼ǿ¡¼­µµ ÇÊ¿äÇÏ´Ù¸é ¾î¶»°Ô µÉ±î¿ä? ¹¹~ ÁöÀúºÐÇØÁø Global.asax ÆÄÀÏÀ» º¹»çÇØ¼­ °¡Á®´Ù°¡ ÆíÁýÇØ¼­ ½áµµ µÇ°ÚÁö¸¸, ±× ¹æ¹ýÀº ±×´ÙÁö È¿°úÀûÀ̶ó°í ´À²¸ÁöÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù. Äڵ尡 º¯°æµÇ°Å³ª, º¸°­µÇ¾î¾ß ÇÑ´Ù¸é ±×·¸³ª Global.asaxµéÀ» ´Ù ã¾Æ´Ù´Ï¸é¼­ °íÃÄÁÖ¾î¾ß ÇÒÅ״ϱî¿ä. ±×·¸½À´Ï´Ù. »ý°¢¸¸Çصµ ²ûÂïÇϳ׿ä!!

±×·² ¹Ù¿¡´Â Â÷¶ó¸®, ±×·¯ÇÑ ±â´ÉµéÀ» µ¶¸³ÀûÀÎ º°µµÀÇ ¸ðµâ(ȤÀº ÄÄÆ÷³ÍÆ®)·Î ¸¸µé¾î¼­ Àç»ç¿ëÇÏ´Â ÂÊÀ¸·Î ¼³°è¹æÇâÀ» Àâ´Â °ÍÀÌ ÈξÀ ´õ È¿°úÀûÀÏ °ÍÀ̶ó´Â »ý°¢ÀÌ µéÁö ¾Ê½À´Ï±î?

ÇØ¼­, HttpModuleÀÌ ÇÊ¿äÇÑ °ÍÀÔ´Ï´Ù!

Global.asax¸¦ Á÷Á¢ÀûÀ¸·Î ÀÌ¿ëÇÏÁö ¾Ê°íµµ, HttpModuleÀ» Á¦ÀÛÇÏ¿© »ç¿ëÇÏ¸é ¹Ù·Î ±×·¯ÇÑ ¾îÇø®ÄÉÀÌ¼Ç À̺¥Æ®µéÀ» ·±Å¸ÀÓ Áß¿¡ °¡·Îç ¼ö ÀÖÀ¸¸ç, ƯÁ¤ ¿ä°Ç¿¡ µû¶ó ó¸®ÇØ¾ß ÇÒ ÀÛ¾÷µéÀ» °³º°ÀûÀ¸·Î ¸ðµâÈ­ ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¹°·Ð, ±×·¸±â¿¡ Àç»ç¿ëÀÌ °¡´ÉÇÑ °ÍÀº µÎ¸»ÇÒ Çʿ䵵 ¾ø°ÚÁÒ?

¿¹¸¦ µé¾î, ¿¹¿Ü°¡ ¹ß»ýÇÒ °æ¿ì ±× ³»¿ªÀ» ÆÄÀÏÀ̳ª µ¥ÀÌÅͺ£À̽º¿¡ ·Î±ëÀ» ÇÏ°í ½Í´Ù¸é? ±×·¸´Ù¸é, ±×·¯ÇÑ ÀÛ¾÷À» Global.asax¿¡ ÀÛ¼ºÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó °³º°ÀûÀÎ HttpModule¸¦ ÀÛ¼ºÇؼ­ »ç¿ëÇÏ¸é µÇ´Â °ÍÀÔ´Ï´Ù. ¶ÇÇÑ, À¥ ÆäÀÌÁöÀÇ ¼öÇà½Ã°£À̳ª ¿äû Á¤º¸ Åë°è °°Àº °ÍµéÀ» º°µµ·Î ·Î±ëÇÏ°í ½ÍÀ» °æ¿ìµµ ±×·¯ÇÑ ÀÛ¾÷À» Global.asax¿¡ Á÷Á¢ ÀÛ¼ºÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó º°µµÀÇ HttpModule¸¦ ÀÛ¼ºÇؼ­ »ç¿ëÇÏ¸é µË´Ï´Ù. ÀÌ·¸°Ô µÇ¸é, °¢°¢ÀÇ ±â´ÉµéÀÌ º°µµ·Î ¸ðµâÈ­ µÇ±â¿¡ °¡µ¶¼º Ãø¸é¿¡¼­µµ, °ü¸®, Àç »ç¿ë¼º Ãø¸é¿¡¼­µµ Å« ÀÌÀÍÀ» º¼ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù (´Ù¸¸, ¼º´ÉÀûÀ¸·Î´Â ¾à°£ÀÇ Èñ»ýÀÌ ¿ä±¸µÉ µÎµµ ÀÖÀ» °ÍÀ̱ä ÇÕ´Ï´Ù).

´Ù¼Ò À̾߱Ⱑ º¹ÀâÇØÁø °Í °°Àºµ¥, Á¤¸®ÇÏÀÚ¸é ´ÙÀ½°ú °°½À´Ï´Ù.

HttpModule¸¦ Á¦ÀÛÇÏ°Ô µÇ¸é, ¾îÇø®ÄÉÀ̼ÇÀÇ ¿©·¯ À̺¥Æ®µéÀ» °¡·Îä¼­ ¾îÇø®ÄÉÀÌ¼Ç °øÅëÀûÀ¸·Î ÇÊ¿äÇÑ ÀÛ¾÷µéÀ» µ¶¸³ÀûÀ¸·Î ¸ðµâÈ­ÇÒ ¼ö ÀÖ´Ù(ÇØ¼­, À̸¦ Intercepting Filter¶ó°íµµ À̾߱âÇÕ´Ï´Ù)

À§¿¡¼­ Global.asax¿Í HttpModuleÀ» ºñ±³ÇØ °¡¸é¼­ ¼³¸íÀ» ÇÏ¿©, Ȥ½Ã¶óµµ HttpModuleÀÌ Global.asaxÀÇ ´ëüÀÏ ¼ö ÀÖ´Ù°í »ý°¢ÇϽDZî ÇÏ¿© ÷¾ðÇÏÀÚ¸é ¸»ÀÔ´Ï´Ù. »ç½Ç, HttpModuleÀÇ ¿ªÇÒÀÌ Global.asaxÀÇ ¿ªÇÒÀ» ´ë½ÅÇϱâ À§ÇÑ °ÍÀº ¾Æ´Õ´Ï´Ù. ÀÌÇØ¸¦ µ½±â À§Çؼ­ Global.asax¿Í ºñ±³Çذ¡¸é¼­ ¼³¸íÇÑ °ÍÀÌÁö, ±×°ÍÀÌ ÁÖ ¸ñÀûÀº ¾Æ´Ï¶ó´Â °ÍÀ» ±â¾ïÇÏ¼Å¾ß ÇÕ´Ï´Ù. HttpModuleÀº ¸» ±×´ë·Î °øÅëÀûÀÎ Http ¿äû¿¡ ´ëÀÀÇϱâ À§ÇÑ ¸ðµâÀ̶ó´Â °ÍÀ» ±â¾ïÇϼ¼¿°~

Âü°í : Intercepting Filter ÆÐÅÏ
HttpModuleÀº À¥ ¾îÇø®ÄÉÀÌ¼Ç ³»ÀÇ ¹Ýº¹ÀûÀÎ ±â´ÉÀ» ±¸ÇöÇϱâ À§ÇØ Intercepting Filter ÆÐÅÏÀ» Àû¿ëÇÑ ±â¼úÀÔ´Ï´Ù. Áï, À¥ ¾îÇø®ÄÉÀ̼ÇÀÌ ÆäÀÌÁö ¿äûÀ» ó¸®Çϱâ ÀüÀ̳ª ÈÄ¿¡ °íÀ¯ÇÑ ¾î¶² ó¸® °úÁ¤À» Ãß°¡ÇØ¾ß ÇÒ Çʿ䰡 ÀÖÀ» °æ¿ì »ç¿ëÇÏ´Â ±â¼úÀÔ´Ï´Ù. ±âÁ¸ Äڵ峪 ÇÁ·¹ÀÓ¿öÅ©¸¦ º¯°æÇÔ ¾øÀÌ »õ·Î¿î ¸ðµâÀ» °áÇÕÇÒ ¼ö ÀÖ´Â ÀåÁ¡À» Á¦°øÇÏ´Â ´ë½Å, ¼º´ÉÀûÀÎ ºÎ´ãÀÌ ÀÖÀ» ¼ö ÀÖ´Â ºÎºÐÀº Ç×»ó À¯ÀÇÇØ¾ß ÇÕ´Ï´Ù.

Á¶±Ý ¾î·Æ³ª¿ä? ±×·¸´Ù¸é ½ÇÁ¦ ¿¹Á¦°¡ ÇÊ¿äÇÑ ½ÃÁ¡ÀÌ µÇ°Ú³×¿ä. ÀÏ´Ü, °£´ÜÇÑ ¿¹Á¦ºÎÅÍ Çѹø ÇØº¸°í À̾߱⸦ ´õ ÁøÇàÇØº¸µµ·Ï ÇϰڽÀ´Ï´Ù.

¿¹Á¦¸¦ À§Çؼ­ »õ·Î¿î ASP.NET »çÀÌÆ® Çϳª¿Í Ŭ·¡½º ¶óÀ̺귯¸®¸¦ Çϳª ¸¸µé¾î º¸µµ·Ï ÇϰڽÀ´Ï´Ù. VS.NETÀ» ¿­°í ¿ì¼±ÀûÀ¸·Î ASP.NET ÀÀ¿ë ÇÁ·Î±×·¥À» Çϳª ¸¸µé¾î º¸µµ·Ï Çϼ¼¿ä. Àú´Â ÇÁ·ÎÁ§Æ® ¸íĪÀ» WebSampleApp ¶ó°í ÁÖ¾î º¸¾Ò½À´Ï´Ù. ±×¸®°í, ±× ÇÁ·ÎÁ§Æ®ÀÇ [¼Ö·ç¼Ç]¿¡ ¸¶¿ì½º ¿ìÃø Ŭ¸¯À» Çϰí [Ãß°¡][»õ ÇÁ·ÎÁ§Æ®]¸¦ ¼±ÅÃÇØ¼­ AspNetRuntimeEx¶ó´Â À̸§ÀÇ Å¬·¡½º ¶óÀ̺귯¸® ÇÁ·ÎÁ§Æ®¸¦ Çϳª ´õ Ãß°¡Çß½À´Ï´Ù. ±×¸®°í, ±âº»ÀûÀ¸·Î Á¸ÀçÇÏ´Â Class1.cs ÆÄÀÏÀ» Á¦°ÅÇϰí, ExeTimeModule.cs¶ó´Â »õ·Î¿î Ŭ·¡½º¸¦ Ãß°¡Çϼ¼¿ä. ±×·¸°Ô ÇØ¼­ ¸¸µé¾îÁø VS.NET ÇÁ·ÎÁ§Æ®´Â ´ÙÀ½°ú °°½À´Ï´Ù.

ExeTimeModule¶ó´Â Ŭ·¡½º´Â HttpModule·Î¼­ Á¦ÀÛÀ» ÇÒ ³à¼®Àä. ÀÌ Ä£±¸°¡ ÇÒ ÀÛ¾÷Àº ¸Å¿ì ´Ü¼øÇÕ´Ï´Ù. ´ÜÁö ÆäÀÌÁö¸¦ ½ÇÇàµÇ´Â µ¥ °É¸° ½Ã°£À» ¸Å ÆäÀÌÁöÀÇ ÇÏ´Ü¿¡ Ãâ·ÂÇÒ °ÍÀ̰ŵç¿ä. ¿ì¼±Àº ´Ü¼øÇÑ ¿¹Á¦·Î ½ÃÀÛÇÏ´Â °ÍÀÌ ÀÌÇØÇÏ´Â µ¥ µµ¿òÀÌ µÇ±â¿¡ ±×·¸°Ô ÇÏ´Â °ÍÀÌÁö, ¿©·¯ºÐÀ» ¹«½ÃÇϰųª °¡º­ÀÌ ¿©±â¼­ ±×·± ¿¹Á¦¸¦ ÇÏ´Â °ÍÀº ¾Æ´ÔÀ» ¾Ë¾ÆÁֽʽÿÀ ^^;

±×·³ ÀÌÁ¦ ExeTimeModule Ŭ·¡½ºÀÇ ±¸ÇöºÎ·Î ÁÁ¾Æ~ °¡´Â°Å¾ß~~ (³ëÈ«ÃÍ ¹öÀüÀÔ´Ï´Ù) ÀÏ´Ü ¿¹Á¦ÀÇ Àüü ¼Ò½º´Â ´ÙÀ½°ú °°½À´Ï´Ù.

using System;
using System.Web;

namespace AspNetRuntimeEx
{
    public class ExeTimeModule : IHttpModule
    {
        private DateTime startTime;

        // IhttpModule ÀÎÅÍÆäÀ̽º ±¸Çö
        public void Init(HttpApplication application)
        {
            application.BeginRequest += new EventHandler(application_BeginRequest);
            application.EndRequest += new EventHandler(application_EndRequest);
        }

        // IhttpModule ÀÎÅÍÆäÀ̽º ±¸Çö
        public void Dispose(){}

        public void application_BeginRequest(object source, EventArgs e)
        {
            startTime = DateTime.Now;
        }

        public void application_EndRequest(object source, EventArgs e)
        {
            //ÇöÀçÀÇ HttpApplication °³Ã¼¸¦ ¾ò¾î¿Â´Ù
            HttpApplication app = (HttpApplication) source;
            //ÇöÀç À¥ ¾îÇø®ÄÉÀ̼ÇÀÇ ÄÁÅØ½ºÆ®¸¦ ¾ò¾î¿Â´Ù
            HttpContext context = app.Context;

            TimeSpan span = DateTime.Now - startTime;
            context.Response.Write("<p>ÆäÀÌÁö ¼öÇà½Ã°£ : " +
                    span.TotalSeconds.ToString() + " ÃÊ</p>");
        }
    }
}

¿ì¼±, »ç¿ëÀÚ Á¤ÀÇ HttpModuleÀ» Á¦ÀÛÇϰíÀÚ ÇÑ´Ù¸é, ¹Ýµå½Ã HttpModuleÀº IHttpModule ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇØ¾ß¸¸ ÇÕ´Ï´Ù. ±×·¡¾ß¸¸ HttpModule·Î¼­ ±¸µ¿À» ÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù. ÇØ¼­, À§ÀÇ ¼Ò½º¿¡¼­µµ ±×·¯ÇÑ ±¸ÇöÀÌ ÀÖ´Â °ÍÀ» º¼ ¼ö°¡ ÀÖÀ» °ÍÀÔ´Ï´Ù.

Âü°í·Î, IHttpModule ÀÎÅÍÆäÀ̽º´Â ´ÙÀ½°ú °°Àº Á¤ÀǸ¦ °¡Áö°í ÀÖ½À´Ï´Ù.

public interface IHttpModule
{
    // Methods
    void Init(HttpApplication context);
    void Dispose();
}

±×·¸±â¿¡, ÀÌ ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇϴ Ŭ·¡½º´Â ¹Ýµå½Ã ÀÌ·¯ÇÑ 2°³ÀÇ ¸Þ¼­µåµéÀ» ¹Ýµå½Ã Á¤ÀÇÇØ¾ß ÇÕ´Ï´Ù. ÇØ¼­, ¿ì¸®ÀÇ ¿¹Á¦¿¡¼­µµ ±× 2°³ÀÇ ¸Þ¼­µå¸¦ ±¸ÇöÇϰí ÀÖ´Â °ÍÀ» º¼ ¼ö ÀÖ½À´Ï´Ù. ¼Ò½º¸¦ »ìÆìº¸¸é, Init ¸Þ¼­µå ¾È¿¡¼­ ¾îÇø®ÄÉÀÌ¼Ç À̺¥Æ® Áß BeginRequest¿Í EndRequest¿¡ ´ëÇÑ À̺¥Æ® 󸮱⸦ °É¾îµÎ°í Àִµ¥¿ä. ÀÌ´Â ¿äû ½ÃÀÛ ½Ã ½ÃÀÛ ½Ã°£À» ÀúÀåÇϱâ À§Çؼ­, ±×¸®°í ¿äûÀÌ ³¡³¯ ¶§ ½ÃÀÛ ½Ã°£°úÀÇ °£°ÝÀ» ±¸ÇØ ±× °ªÀ» Ãâ·ÂÇϱâ À§Çؼ­ÀÔ´Ï´Ù.

application_BeginRequest À̺¥Æ®¿¡¼­´Â ´ÜÁö ÇöÀçÀÇ ½Ã°£À» Ŭ·¡½º º¯¼ö¿¡ ³Ö°í ÀÖ´Â °Í »ÓÀ̱⿡ º°´Ù¸¥ ¼³¸íÀÌ ÇÊ¿äÇÒ °Í °°Áö ¾Ê³×¿ä. ÁÖ¸ñÇÒ ºÎºÐÀº ¸Å ÆäÀÌÁöÀÇ ½ÇÇàÀÌ ³¡³¯ ¶§ ¼öÇàµÇ´Â application_EndRequest À̺¥Æ®ÀÔ´Ï´Ù.

ÀÌ À̺¥Æ® ¾È¿¡¼­´Â ÇöÀçÀÇ ½Ã°£°ú ½ÃÀÛ ½Ã°£°úÀÇ Â÷À̸¦ ±¸Çؼ­ Response.Write·Î ±× °£°Ý Â÷À̸¦ Ãâ·ÂÇϴ ó¸®¸¦ Çϴµ¥¿ä. Áß¿äÇÑ ºÎºÐÀº Response °³Ã¼¸¦ »ç¿ëÇϱâ À§Çؼ­ ÇöÀç ¿äû¿¡ ´ëÇÑ Context¸¦ ¾ò¾î¿À´Â ºÎºÐÀÔ´Ï´Ù.

ÇöÀç Á¦ÀÛÇϰí ÀÖ´Â HttpModuleÀº À¥ ÆäÀÌÁö¿¡ Á¾¼ÓÀûÀÎ °ÍÀÌ ¾Æ´Ï±â¿¡, Response¿Í °°Àº °³Ã¼¸¦ »ç¿ëÇØ¼­ ÇöÀç ½ÇÇà ÁßÀÎ ÆäÀÌÁö¿¡ ¾²±â ÀÛ¾÷À» ÇÏ·Á¸é, ¿ì¼±ÀûÀ¸·Î ÇöÀç ½ÇÇàÁßÀÎ ÆäÀÌÁöÀÇ ÄÁÅØ½ºÆ®¸¦ ¾Ë¾Æ¾ß¸¸ ÇÕ´Ï´Ù.

ÄÁÅØ½ºÆ®¸¦ ¾Ë¾Æ³»·Á¸é ÀÏ´Ü ÇöÀç ½ÇÇà ÁßÀÎ HttpApplicationÀ» ¾Ë¾Æ³¾ Çʿ䰡 Àִµ¥¿ä. ÀÌ´Â À̺¥Æ® ¸Þ¼­µåÀÇ Ã¹ ¹øÂ° ÀÎÀÚ¸¦ Çü º¯È¯ÇÏ¿© ¾ò¾î³¾ ¼ö ÀÖ½À´Ï´Ù. ¼Ò½º Áß ´ÙÀ½ Äڵ尡 ¹Ù·Î ±×°ÍÀÌÁÒ.

//ÇöÀçÀÇ HttpApplication °³Ã¼¸¦ ¾ò¾î¿Â´Ù
HttpApplication app = (HttpApplication)source;
//ÇöÀç À¥ ¾îÇø®ÄÉÀ̼ÇÀÇ ÄÁÅØ½ºÆ®¸¦ ¾ò¾î¿Â´Ù
HttpContext context = app.Context;

ÀÌ ÄÚµå´Â ¸Å¿ì ÀÚÁÖ ¾²À̹ǷΠ±â¾ïÇØ Áֽðųª, ¼ÕÀÌ Àß ´êÀ»¸¸ÇÑ °÷¿¡ º¸°üÇØ µÎ½Ã´Â °ÍÀÌ ÁÁ½À´Ï´Ù. ¾ðÁ¦¶óµµ ¡°±î»ß ¾Ø »¾À̼ö¶Ñ¡± ½Å°øÀ» ÆîÄ¥ ¼ö ÀÖ°Ô ¸»ÀÌÁÒ ^^

ÄÁÅØ½ºÆ®¸¦ ¾ò¾î¿À°Ô µÇ¸é ÀÌ °³Ã¼¸¦ ÅëÇØ¼­ ±âº»ÀûÀÎ ASP.NET ÆäÀÌÁöÀÇ ¸ðµç ³»Àå °³Ã¼µéÀ» ÀÌ¿ëÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. Response´Â ¹°·Ð Request, Server µîµîÀ» ¸»ÀÌÁÒ. ÇØ¼­, ¼Ò½º¿¡¼­´Â ÇØ´ç ÄÁÅØ½ºÆ®ÀÇ Response °³Ã¼ ¼Ó¼ºÀ» ÅëÇØ¼­ Write ¸Þ¼­µå¸¦ È£ÃâÇϰí ÀÖ´Â °ÍÀ» º¼ ¼ö°¡ ÀÖ½À´Ï´Ù.

±× ÄÚµå·Î ÀÎÇØ, ÀÌ ¸ðµâÀº ¸ðµç ÆäÀÌÁöÀÇ È£Ãâ ¿Ï·á ½ÃÁ¡¿¡ ÇöÀç ½ÇÇà ÁßÀÎ ÆäÀÌÁö¿¡ ¾²±â ÀÛ¾÷À» ÇÒ ¼ö°¡ ÀÖ°Ô µÇ´Â °ÍÀÔ´Ï´Ù.

ÀÌÁ¦, °£´ÜÇϱä ÇÏÁö¸¸ ¿ì¸®¸¸ÀÇ Ã¹ ¹øÂ° HttpModule¸¦ ¿Ï¼ºÇ߳׿ä. ±×·¸´Ù¸é, ÀÌ ¸ðµâÀ» ¿ì¸®ÀÇ À¥ ¾îÇø®ÄÉÀ̼ǿ¡¼­ »ç¿ëÇØ¾ß ÇϰÚÁÒ? »ç¿ëÇÏ´Â ¹æ¹ýÀº ¸Å¿ì °£´ÜÇÕ´Ï´Ù. ´ÜÁö, À¥ ¾îÇø®ÄÉÀ̼ÇÀÇ bin µð·ºÅ͸®¿¡ ºôµåµÈ dllÀ» º¹»çÇØ ³Ö°í, Web.config ÆÄÀÏ ¾È¿¡ °¡º­¿î ¼³Á¤ Çϳª¸¸ ÇØÁÖ¸é ³¡ÀÌÁÒ. ¿¹Àü ISAPI ½ÃÀý¿¡´Â ÀÎÅÍ³Ý ¼­ºñ½º °ü¸®ÀÚ¿¡ °¡¼­ ÇÊÅ͸¦ µî·ÏÇØÁÖ°í ÇÏ´Â ´Ù¼Ò ÇǰïÇÑ ÀÛ¾÷À» Çß¾î¾ß¸¸ ÇÏÁö¸¸, .NET¿¡¼­´Â ´ÜÁö config ÆÄÀÏ¿¡ ±×·¯ÇÑ ¼³Á¤À» Ãß°¡ÇØ Áֱ⸸ ÇÏ¸é ³¡ÀÔ´Ï´Ù. ¸Å¿ì °£ÆíÇØÁø °ÍÀÌÁÒ ^^

±×·³ Çѹø ÇØº¼±î¿ä?

¿ì¼± ºôµåµÈ dllÀ» ¿ì¸®ÀÇ À¥ ¾îÇø®ÄÉÀ̼ÇÀÇ bin µð·ºÅ͸®·Î º¹»çÇØ¿Ã Çʿ䰡 ÀÖÀ»ÅÙµ¥¿ä. À̰ÍÀ» ¼öµ¿À¸·Î Çϱ⿡´Â ¾à°£ÀÇ ±ÍÂúÀ½ÀÌ ÀÖÀ¸´Ï °£ÆíÇÏ°Ô Çϱâ À§Çؼ­, À¥ ¾îÇø®ÄÉÀ̼ǿ¡¼­ AspNetRuntimeEx ÇÁ·ÎÁ§Æ®¸¦ [ÇÁ·ÎÁ§Æ® ÂüÁ¶] Çϵµ·Ï Çϼ¼¿ä. À̸¦ À§Çؼ­´Â À¥ ¾îÇø®ÄÉÀÌ¼Ç ÇÁ·ÎÁ§Æ®¿¡¼­ ¸¶¿ì½º ¿ìÃø Ŭ¸¯Çϰí, [ÂüÁ¶ Ãß°¡] ÇϽŠ´ÙÀ½, ´ÙÀ½ ±×¸²°ú °°ÀÌ ÇÁ·ÎÁ§Æ® ÂüÁ¶¸¦ Àâ¾ÆÁֱ⸸ ÇÏ¸é µË´Ï´Ù.

ÀÌ·¸°Ô Çϰí À¥ ¾îÇø®ÄÉÀ̼ÇÀ» ºôµåÇϸé ÀÚµ¿À¸·Î ÂüÁ¶µÈ ÇÁ·ÎÁ§Æ®ÀÇ dll µéÀÌ À¥ ¾îÇø®ÄÉÀ̼ÇÀÇ bin µð·ºÅ͸®·Î ÀÚµ¿ º¹»ç°¡ µÇ´Ï±î¿ä.

OK! ÀÚ. ÀÌÁ¦ ¾î¼Àºí¸® ¹èÆ÷µµ ÀÏ´ÜÀº ¿Ï·áµÇ¾ú³×¿ä. ±×·³ ³²¾ÆÀÖ´Â °ÍÀº web.config ÆÄÀÏ¿¡ HttpModule¸¦ ÀåÂøÇÏ´Â °Í¸¸ÀÌ ³²¾Ò½À´Ï´Ù. Web.config ÆÄÀÏÀ» ¿­¾î¼­ ´ÙÀ½°ú °°ÀÌ Ãß°¡¸¦ ÇØ ÁÖ¼¼¿ä. ^^

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.web>
        <httpModules>
            <add name="ExeTimeWriter" type="AspNetRuntimeEx.ExeTimeModule, AspNetRuntimeEx" />
        </httpModules>
        <!-- µ¿Àû µð¹ö±ë ÄÄÆÄÀÏ
            compilation debug="true"·Î ¼³Á¤ÇÏ¿© ÄÄÆÄÀÏµÈ ÆäÀÌÁö¿¡
            µð¹ö±ë ±âÈ£(.pdb Á¤º¸)¸¦ »ðÀÔÇÕ´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ÆÄÀÏ Å©±â°¡ Ä¿Á®¼­ ½ÇÇà ¼Óµµ°¡
            ´À·ÁÁö¹Ç·Î µð¹ö±ë ÇÏ´Â °æ¿ì¿¡¸¸ ÀÌ °ªÀ» true·Î ¼³Á¤Çϰí
            ´Ù¸¥ ¸ðµç °æ¿ì¿¡´Â false·Î ¼³Á¤ÇØ¾ß ÇÕ´Ï´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº
            ASP.NET ÆÄÀÏ µð¹ö±ë¿¡ ´ëÇÑ ¼³¸í¼­¸¦ ÂüÁ¶ÇϽʽÿÀ.
        -->
        <compilation defaultLanguage="vb" debug="true" />

<system.web> ¼½¼ÇÀÇ ÇÏÀ§·Î <httpModules>¸¦ Ãß°¡ÇØ ÁØ ´ÙÀ½, ¿©·¯ºÐÀÌ Á¦ÀÛÇÑ HttpModuleµéÀ» Add ÇØ Áֱ⸸ ÇÏ¸é µË´Ï´Ù. Á¦ÀÛÇÑ ´Ù¸¥ ¸ðµâµéÀÌ ÀÖ´Ù¸é ±×µéµµ ¿øÇÏ´Â ¸¸Å­ Ãß°¡ÇÒ ¼ö ÀÖ°ÚÁÒ? AddÇÒ °æ¿ì, nameÀº ±×³É °íÀ¯ÇÑ À̸§À» ÁÖ½Ã¸é µË´Ï´Ù. Áß¿äÇÑ °ÍÀº typeÀä. Type´Â ´ÙÀ½°ú °°Àº Çü½ÄÀ¸·Î ÁöÁ¤ÇØ ÁÖ¼Å¾ß ÇÕ´Ï´Ù.

Type="³×ÀÓ½ºÆäÀ̽º.Ŭ·¡½º¸í, ¾î¼Àºí¸®¸í(.dllÀ» »« ¸íĪ)"

ÁÁ½À´Ï´Ù. ¿©±â±îÁö ÁöÁ¤Çß´Ù¸é ÀÌÁ¦ ¿ì¸®¸¸ÀÇ ÇÊÅÍÀÎ HttpModuleÀº µî·ÏÀÌ µÈ °ÍÀÔ´Ï´Ù.

ÀÌÁ¦ Àß µ¿ÀÛÇÏ´ÂÁö¸¦ Å×½ºÆ®ÇØ º¸±â À§Çؼ­, aspx ÆäÀÌÁö¸¦ Çϳª ¸¸µé¾î º¸µµ·Ï ÇϰڽÀ´Ï´Ù. Aspx ÆäÀÌÁö ÀÚü¿¡ Ưº°ÇÑ ±â´ÉÀÌ Á¸ÀçÇÏ´Â °ÍÀº ¾Æ´Ï±¸¿ä. ´ÜÁö, ±× ÆäÀÌÁö¿¡´Â ½ÇÇàÀ» ¾à°£ ´õµð°Ô ¸¸µå´Â ·ÎÁ÷¸¸ÀÌ µé¾îÀÖÀ» »ÓÀÔ´Ï´Ù. Áï, Thread.Sleep¸¦ ½á¼­ ¾à 2ÃÊ Á¤µµ ½ÇÇàÀ» ÁßÁöÇÏ·Á ÇÏ´Â °ÍÀä. ±×·± ·ÎÁ÷À» »ç¿ëÇÏÁö ¾ÊÀ¸¸é, ½ÇÇà½Ã°£ÀÌ ³Ê¹« »¡¶ó¼­ ¾Æ¸¶µµ HttpModuleÀÌ »êÃâÇØ³»´Â ½ÇÇà ½Ã°£ÀÌ ¾ðÁ¦³ª 0ÀÌ ³ª¿Ã °¡´É¼ºÀÌ Àְŵç¿ä ^^

ÀÚ. ¿©·¯ºÐµµ ´ÙÀ½°ú °°Àº Default.aspx ÆäÀÌÁö¸¦ Çϳª ¸¸µéµµ·Ï Çϼ¼¿ä.

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="Default.aspx.vb"
Inherits="WebSampleApp._Default"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
    <HEAD>
        <title>Default</title>
        <style>p {font-family:verdana; font-size:11px}</style>
    </HEAD>
    <body>
        <form id="Form1" method="post" runat="server">
            <p>Àú´Â Default.aspx ÆäÀÌÁöÀÔ´Ï´Ù.</p>
        </form>
    </body>
</HTML>

±×¸®°í, ÄÚµå ºñÇÏÀÎµå ÆäÀÌÁöÀÇ Page_Load À̺¥Æ® ÄÚµå´Â ´ÙÀ½°ú °°½À´Ï´Ù.

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    System.Threading.Thread.Sleep(2000)
End Sub

´Ù µÇ¾úÀ¸¸é, ÀÌÁ¦ ½ÇÇàÀ» ÇØ º¾´Ï´Ù. ±×·¯¸é, ÆäÀÌÁö°¡ ½ÇÇàµÉ ¶§¸¶´Ù, HttpModuleÀÌ ±¸µ¿ÇÏ¿© ÆäÀÌÁöÀÇ ±¸µ¿ÀÌ ³¡³­ ÈÄ, ÆäÀÌÁöÀÇ ÇÏ´Ü¿¡ ½ÇÇà ½Ã°£À» Ãâ·ÂÇØ ÁÖ´Â °ÍÀ» º¸½Ç ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ´ÙÀ½°ú °°ÀÌ ¸»ÀÌÁÒ ^^

¸ÚÁöÁö ¾Ê³ª¿ä?
ºñ·Ï ¿¹Á¦°¡ ±×´ÙÁö ½Ç¿ëÀûÀÎ °ÍÀº ¾Æ´Ï¾ú±â¿¡ °¨µ¿ÀÌ ÀûÀ» ¼öµµ ÀÖ°ÚÁö¸¸, ÀÌ ¿¹Á¦¸¦ ÅëÇØ¼­ ¿©·¯ºÐÀº À¥ ÆäÀÌÁö ½ÇÇà Àü, ÈÄ¿¡ ¾î¶² ·ÎÁ÷À» ¼öÇàÇÏ´Â ¹æ¹ýÀ» ¾Ë°Ô µÈ °ÍÀÔ´Ï´Ù. ^^ Àç¹ÌÀÖ´Ù±¸¿ä?? ÇÏÇÏÇÏ¡¦ ¶Ç Àç¹ÌÀÖ¾î ÇϽô ºÐµéÀÌ ÀÌ·¸°Ô ¸¹À¸¸é ±×³É ³Ñ¾î°¥ ¼ö ÀÖ´Â Å¿À ¾Æ´Õ´Ï±î?

±×·¸´Ù¸é, À§ÀÇ ¿¹Á¦º¸´Ù´Â Á» ´õ Àç¹ÌÀÖÀ» ¸¸ÇÑ ¿¹Á¦¸¦ Çϳª ´õ ÇØº¼±î¿ä? À̹ø ¿¹Á¦´Â ¸»ÀÔ´Ï´Ù. À¥ ¾îÇø®ÄÉÀ̼ǿ¡¼­ ¿¹¿Ü°¡ ¹ß»ýÇÒ ¶§¸¶´Ù ±×°ÍÀ» ÆÄÀÏ¿¡ ·Î±ëÇÏ´Â HttpModule ¿¹Á¦ÀÔ´Ï´Ù. Àú´Â ¿¹Á¦ÀÇ ½ÉÇÃÈ­¸¦ À§Çؼ­ ÆÄÀÏ¿¡ ·Î±ëÇÏ´Â ÂÊÀ» ÅÃÇߴµ¥¿ä. ¸¸ÀÏ, À̸¦ µ¥ÀÌÅͺ£À̽º¿¡ ·Î±ëÇÑ´Ù¸é º¸´Ù ½±°Ô ¿¹¿Ü Åë°è¸¦ º¼ ¼öµµ ÀÖÀ» °ÍÀÔ´Ï´Ù. Áï, ¾î¶² ÆäÀÌÁö°¡ ¿¡·¯°¡ °¡Àå Àß ÀϾ°í, ±× ¿¡·¯´Â ¹«¾ùÀ̰í, ÁÖ·Î ¸î ½Ã ÁîÀ½¿¡ °¡Àå ¿¡·¯°¡ ¸¹Àº Áö µîµîÀ» ¸»ÀÔ´Ï´Ù. ÇÏ~ Àç¹ÌÀÖÀ» °Í °°´Ù±¸¿ä??? ¹°·ÐÀÔ´Ï´Ù. ^^

±×·³, Çѹø ÇØº¼±î¿ä? ¾ðÁ¦??? È÷Èý~ ¾Æ½Ã¸é¼­~~
±×·³ ´ÙÀ½ °­Á¿¡¼­ ¶Ç À̾°¡ º¸¾Æ¿ä~~

 

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