ASP.NET HTTPÔËÐÐʱ×é³ÉÏê½â-.Net¼¼Êõ-3P´úÂëÍø
¡¾·±ÌåÖÐÎÄ¡¿
¡¾ÉèΪÊ×Ò³¡¿
¡¾¼ÓÈëÊղء¿
µ±Ç°Î»Öãº.Net¼¼ÊõÊ×Ò³ >> Asp.Net¿ª·¢ >> ASP.NET HTTPÔËÐÐʱ×é³ÉÏê½â

ASP.NET HTTPÔËÐÐʱ×é³ÉÏê½â

2007-10-15 08:00:00  ×÷Õߣº  À´Ô´£º»¥ÁªÍø  ä¯ÀÀ´ÎÊý£º0  ÎÄ×Ö´óС£º¡¾´ó¡¿¡¾ÖС¿¡¾Ð¡¡¿
¼ò½é£º¼ò½é ¡¡¡¡²»¹ÜʹÓÃÄÄÖÖµ×²ãÆ½Ì¨£¬¿É¿¿ÐÔºÍÐÔÄܶ¼ÊǶÔËùÓÐ Web Ó¦ÓóÌÐòµÄÖ÷ÒªÒªÇ󣬾¡¹Ü´ÓijÖÖÒâÒåÉϽ²£¬ÕâÁ½¸öÒªÇóÊÇÏ໥ì¶ÜµÄ¡£ÀýÈ磬Ҫ¹¹½¨¸ü¿É¿¿¡¢¸ü½¡×³µÄÓ¦ÓóÌÐò£¬¿ÉÄÜÐèÒª½« Web ·þÎñÆ÷Óë¾ßÌåµÄÓ¦ÓóÌÐò...
¹Ø¼ü×Ö£ºHTTP NET ASP

¼ò½é

¡¡¡¡²»¹ÜʹÓÃÄÄÖÖµ×²ãÆ½Ì¨£¬¿É¿¿ÐÔºÍÐÔÄܶ¼ÊǶÔËùÓÐ Web Ó¦ÓóÌÐòµÄÖ÷ÒªÒªÇ󣬾¡¹Ü´ÓijÖÖÒâÒåÉϽ²£¬ÕâÁ½¸öÒªÇóÊÇÏ໥ì¶ÜµÄ¡£ÀýÈ磬Ҫ¹¹½¨¸ü¿É¿¿¡¢¸ü½¡×³µÄÓ¦ÓóÌÐò£¬¿ÉÄÜÐèÒª½« Web ·þÎñÆ÷Óë¾ßÌåµÄÓ¦ÓóÌÐò·ÖÀ룬ʹӦÓóÌÐòÔÚ½ø³ÌÍ⹤×÷¡£µ«ÊÇ£¬Èç¹ûÔÚ²»Í¬ÓÚ Web ·þÎñÆ÷½ø³ÌµÄÄÚ´æ»·¾³Öй¤×÷£¬Ó¦ÓóÌÐò½«±äÂý¡£Òò´Ë£¬ÐèÒª²ÉÈ¡ºÏÀíµÄ´ëÊ©£¬ÒÔÈ·±£½ø³ÌÍâ´úÂ뾡¿ÉÄÜ¿ìµØÔËÐС£

¡¡¡¡ÔÚ¹¹½¨ Microsoft? ASP.NET ÔËÐÐʱ»·¾³Ê±£¬ÒÀ¾ÝµÄÉè¼ÆÔ­Ôò¼´£º³ä·Ö¿¼Âǿɿ¿ÐÔºÍÐÔÄÜ¡£µÃµ½µÄ ASP.NET ½ø³ÌÄ£ÐͰüº¬ÁËÁ½¸öÏµÍ³ÔªËØ - Ò»¸ö´æÔÚÓÚ Web ·þÎñÆ÷½ø³ÌÖеĽø³ÌÄÚÁ¬½ÓÆ÷£¬Ò»¸öÍⲿµÄ¸¨Öú½ø³Ì¡£ÁíÍ⣬ASP.NET ÔËÐÐʱ½á¹¹µÄ¿ÉÉìËõÄÜÁ¦ºÜÇ¿£¬¿ÉÒÔ×Ô¶¯Ê¹ÓöദÀíÆ÷Ó²¼þÖÐÈÎÒâÑ¡¶¨µÄ´¦ÀíÆ÷¡£ÕâÖÖģʽ±»³ÆÎª¡°Web Garden¡±£¬Ëü¿ÉÒÔʹ¶à¸ö¸¨Öú½ø³ÌͬʱÔËÐУ¬¶øÇÒ¸÷¸ö½ø³Ì¾ùÔÚ¶ÀÁ¢µÄ´¦ÀíÆ÷ÖС£

¡¡¡¡¸ß¶È¸ÅÀ¨ÆðÀ´£¬ASP.NET ÔËÐÐʱ¾ßÓÐÈý´óÊôÐÔ£º

¡¡¡¡Ó¦ÓóÌÐòºÍ ASP.NET ¸¨Öú½ø³ÌÖ®¼äÍêÈ«·ÖÀë¡£Ìṩ·þÎñµÄ¸¨Öú½ø³ÌµÄÊÙÃü¾ö²»»áÓ°ÏìÓ¦ÓóÌÐòµÄÊÙÃü¡£»»¾ä»°Ëµ£¬µ±Ó¦ÓóÌÐòÆô¶¯²¢´¦ÓÚÔËÐÐ״̬ʱ£¬¸¨Öú½ø³Ì¿ÉÒÔËæÊ±ÖÕÖ¹¡£

¾¡¹Ü ASP.NET Ó¦ÓóÌÐò´Ó²»ÔÚ Web ·þÎñÆ÷ÄÚ²ÉÓýø³ÌÄڵķ½Ê½ÔËÐУ¬µ«´ó¶àÊýÇé¿öÏ£¬Æä×ÜÌåÐÔÄÜÈÔ½Ó½üÓÚ½ø³ÌÄÚÓ¦ÓóÌÐòµÄÐÔÄÜ¡£

¡¡¡¡Îª Web Garden Ìåϵ½á¹¹ÌṩÁËÄÚÖõĺͿÉÅäÖõÄÖ§³Ö¡£Ö»Òª¼òµ¥¼ì²éÒ»ÏÂÅäÖÃÎļþÖеÄÉèÖ㬸¨Öú½ø³Ì¾Í¿ÉÒÔ¿Ë¡×Ô¼º£¬ÒÔÀûÓÃËùÓÐÓë½ø³ÌÃÜÇÐÏà¹ØµÄ CPU¡£Òò´Ë£¬ÔÚ´ó¶àÊýÇé¿öÏ£¬ÄúÔھ߱¸¶à´¦ÀíÆ÷µÄ¼ÆËã»úÖлñµÃµÄ¿ÉËõ·ÅÐÔ½«³ÊÏßÐÔÔö³¤µÄÇ÷ÊÆ¡££¨±¾ÎĺóÃæ½«Ïêϸ½éÉÜ´ËÄÚÈÝ¡££©

¡¡¡¡±¾ÎĽ«½éÉÜ ASP.NET ÔËÐÐʱ»·¾³µÄ×é³ÉÔªËØ£¬È»ºóÒ»²½Ò»²½µØ½²Êö´Ó URL ÇëÇó±äΪ´¿ HTML Îı¾µÄ¡°Âþ³¤¶øÇúÕÛ¡±µÄ¹ý³Ì¡£

¡¡¡¡³ý·ÇÁíÓÐ˵Ã÷£¬·ñÔòÒÔϽéÉÜÖоùÖ¸ ASP.NET µÄĬÈϽø³ÌÄ£ÐÍ£¬¼´ Microsoft? Internet Information Services (IIS) 5.x ÖÐΨһµÄÄ£ÐÍ¡£

¡¡¡¡ASP.NET ½á¹¹µÄ×é¼þ

¡¡¡¡Ö´ÐÐ ASP.NET Ó¦ÓóÌÐòÐèÒªËÞÖ÷ Web ·þÎñÆ÷µÄÖ§³Ö¡£ÔÚ Microsoft? Windows? µÄ Server ƽ̨ÖУ¬Web ·þÎñÆ÷ÓÉÃûΪ inetinfo.exe µÄ IIS ¿ÉÖ´ÐÐÎļþ±íʾ¡£Windows 2000 ¼°ÒÔÉϰ汾µÄ²Ù×÷ϵͳ±¾Éí¾ùÌṩÁË Web ·þÎñÆ÷¡£µ«ÐèҪעÒ⣬ÔÚ Microsoft? Windows Server™ 2003 ÖУ¬²¢Î´Ä¬Èϰ²×° IIS ºÍ ASP.NET£¬±ØÐëͨ¹ýµ¥»÷¡°¿ØÖÆÃæ°å¡±Öеġ°Ìí¼Ó»òɾ³ý³ÌÐò¡±Ð¡³ÌÐò½«ÆäÌí¼Óµ½ÏµÍ³ÖС£

¡¡¡¡IIS ÊÇÒ»¸öδÍйܵĿÉÖ´ÐгÌÐò£¬ËüÌṩÁËÒ»¸ö»ùÓÚ ISAPI À©Õ¹Ä£¿éºÍɸѡÆ÷Ä£¿éµÄ¿ÉÀ©Õ¹Ä£ÐÍ¡£Í¨¹ý±àд´ËÀàÄ£¿é£¬¿ª·¢ÈËÔ±¿ÉÒÔÖ±½Ó¹ÜÀí¶ÔÌØ¶¨×ÊÔ´ÀàÐ͵ÄÇëÇ󣬲¢ÔÚ¸÷¸öÔ¤¶¨ÒåµÄ²½ÖèÖнÓÊÕµ±Ç°ÇëÇó¡£À©Õ¹ºÍɸѡÆ÷ÊÇһЩ DLL£¬¿ÉÒÔµ¼³öһЩ¾ßÓÐÒÑÖªÃû³ÆºÍÇ©ÃûµÄº¯Êý¡£ÕâЩ²å¼þ×é¼þÊÇÔÚ IIS ÅäÖÃÊý¾Ý¿âÖÐ×¢²á²¢ÅäÖõġ£

¡¡

¡¡¡¡Ö»ÓÐÉÙÊý¼¸ÖÖ±»¿Í»§¶ËÇëÇóµÄ×ÊÔ´ÀàÐÍÓÉ IIS Ö±½Ó´¦Àí¡£ÀýÈ磬¶Ô HTML Ò³Ãæ¡¢Îı¾Îļþ¡¢JPEG ºÍ GIF ͼÏñµÄ´«ÈëÇëÇóÓÉ IIS ´¦Àí¡£¶Ô Active Server Page (*.ASP) ÎļþµÄÇëÇóͨ¹ýµ÷ÓÃÃûΪ ASP.dll µÄ ASP רÓÃÀ©Õ¹Ä£¿é½øÐнâÎö¡£Í¬Ñù£¬¶Ô ASP.NET ×ÊÔ´£¨ÀýÈ磬*.ASPx¡¢*.asmx¡¢*.ashx£©µÄÇëÇ󽫴«µÝµ½ ASP.NET ISAPI À©Õ¹¡£¸Ãϵͳ×é¼þÊÇÒ»¸öÃûΪ ASPnet_isapi.dll µÄ Win32 DLL¡£ASP.NET À©Õ¹¿ÉÒÔ´¦Àí¶àÖÖ×ÊÔ´ÀàÐÍ£¬°üÀ¨ Web ·þÎñºÍ HTTP ´¦Àí³ÌÐòµ÷Óá£

¡¡¡¡ASP.NET ISAPI À©Õ¹ÊÇÒ»¸ö Win32 DLL£¬Î´¼¯³ÉÍйܴúÂë¡£ËüÊǽÓÊպͷÖÅɶԸ÷ÖÖ ASP.NET ×ÊÔ´µÄÇëÇóµÄ¿ØÖÆÖÐÐÄ¡£°´ÕÕÉè¼Æ£¬¸ÃÄ£¿é´æÔÚÓÚ IIS ½ø³ÌÖУ¬ÔÚ¾ßÓйÜÀíԱȨÏÞµÄ SYSTEM ÕÊ»§ÏÂÔËÐС£¿ª·¢ÈËÔ±ºÍϵͳ¹ÜÀíÔ±²»ÄÜÐ޸ĴËÕÊ»§¡£ASP.NET ISAPI À©Õ¹¸ºÔðµ÷Óà ASP.NET ¸¨Öú½ø³Ì (ASPnet_wp.exe)£¬¶ø¸Ã½ø³ÌÓÖ¸ºÔð¿ØÖÆÇëÇóµÄÖ´ÐС£³ýÁ˶ÔÇëÇó½øÐа²ÅÅÒÔÍ⣬ASP.NET ISAPI »¹¼àÊÓ¸¨Öú½ø³ÌµÄÔËÐÐÇé¿ö£¬²¢ÔÚÐÔÄܽµµÍµ½Ò»¶¨³Ì¶Èʱ½«½ø³ÌÈ¡Ïû¡£

¡¡¡¡¸¨Öú½ø³ÌÊÇһС¶Î Win32 shell ´úÂ룬¼¯³ÉÁ˹«¹²ÓïÑÔÔËÐпâ (CLR) ²¢ÔËÐÐÍйܴúÂë¡£Ëü¸ºÔð´¦Àí¶Ô ASPX¡¢ASMX ºÍ ASHX ×ÊÔ´µÄÇëÇó¡£Ò»°ãÀ´Ëµ£¬´Ë½ø³ÌÔÚһ̨¸ø¶¨µÄ¼ÆËã»úÖÐÖ»ÓÐÒ»¸öʵÀý¡£ËùÓе±Ç°¼¤»îµÄ ASP.NET Ó¦ÓóÌÐò¾ùÔÚÆäÖÐÔËÐУ¬Ã¿¸öÓ¦ÓóÌÐò¶¼Î»ÓÚÒ»¸ö¶ÀÁ¢µÄ AppDomain ÖС£µ«ÊÇ£¬ÈçǰËùÊö£¬¸¨Öú½ø³ÌÖ§³Ö Web Garden ģʽ£¬¼´½ø³ÌµÄÏàͬ¸±±¾¶¼ÔËÐÐÔÚÓë½ø³ÌÃÜÇÐÏà¹ØµÄ CPU ÖС££¨¸ü¶àÄÚÈÝ£¬Çë²ÎÔı¾ÎĺóÃæµÄ¡°Web Garden Ä£ÐÍ¡±²¿·Ö¡££©

¡¡¡¡ISAPI ºÍ¸¨Öú½ø³ÌÖ®¼äµÄͨѶÊÇʹÓÃÒ»×éÃüÃû¹ÜµÀ½øÐеġ£ÃüÃû¹ÜµÀÊÇÒ»ÖÖ Win32 »úÖÆ£¬ÓÃÓÚ¿ç½ø³Ì±ß½ç´«ÊäÊý¾Ý¡£¹ËÃû˼Ò壬ÃüÃû¹ÜµÀµÄ¹¤×÷·½Ê½Óë¹ÜµÀÏàËÆ£ºÔÚÒ»¶ËÊäÈëÊý¾Ý£¬ÔÚÁíÒ»¶ËÊä³öÏàͬµÄÊý¾Ý¡£½¨Á¢µÄ¹ÜµÀ¼È¿ÉÒÔÁ¬½Ó±¾µØ½ø³Ì£¬Ò²¿ÉÒÔÁ¬½ÓÔ¶³Ì¼ÆËã»úÉÏÔËÐеĽø³Ì¡£¶ÔÓÚ±¾µØ½ø³Ì¼äͨѶ£¬¹ÜµÀÊÇ Windows ÖеÄ×îÓÐЧ¡¢×îÁé»îµÄ¹¤¾ß¡£

¡¡¡¡ÎªÈ·±£»ñµÃ×îÓÅÐÔÄÜ£¬ASPnet_isapi ʹÓÃÒì²½ÃüÃû¹ÜµÀÀ´½«ÇëÇóת·¢¸ø¸¨Öú½ø³Ì²¢»ñµÃÏìÓ¦¡£ÁíÒ»·½Ã棬¸¨Öú½ø³ÌÔÚÐèÒª²éѯÓÐ¹Ø IIS »·¾³µÄÐÅÏ¢£¨¼´·þÎñÆ÷±äÁ¿£©Ê±ÓÖʹÓÃͬ²½¹ÜµÀ¡£ASPnet_isapi Ä£¿é´´½¨¹Ì¶¨ÊýÁ¿µÄÃüÃû¹ÜµÀ£¬²¢Ê¹ÓÃÖØµþµÄ²Ù×÷ÒÔͨ¹ýСµÄÏ̳߳ش¦Àíͬһʱ¼ä½øÐеÄÁ¬½Ó¡£µ±Í¨¹ý¹ÜµÀ½øÐеÄÊý¾Ý½»»»²Ù×÷½áÊøºó£¬Íê³ÉÀý³Ì½«¶Ï¿ª¿Í»§¶Ë£¬²¢ÖØÐÂʹÓùܵÀʵÀýΪеĿͻ§¶Ë·þÎñ¡£Ï̳߳غÍÖØµþ²Ù×÷¾ù¿ÉÒÔ±£Ö¤Ê¹ ASP.NET ISAPI µÄÐÔÄÜ´ïµ½ÁîÈËÂúÒâµÄˮƽ¡£µ«ÊÇ£¬ASPnet_isapi À©Õ¹¾ö²»»á´¦Àí HTTP ÇëÇó¡£

¡¡¡¡ASP.NET ÇëÇóµÄ´¦ÀíÂß¼­¿ÉÒÔ¸ÅÀ¨ÎªÒÔϲ½Ö裺

¡¡¡¡µ±ÇëÇóµ½´ïʱ£¬IIS ¼ì²é×ÊÔ´ÀàÐͲ¢µ÷Óà ASP.NET ISAPI À©Õ¹¡£Èç¹ûÆôÓÃÁËĬÈϵĽø³ÌÄ£ÐÍ£¬ASPnet_isapi »á½«ÇëÇóÅŶӣ¬²¢½«ÇëÇó·ÖÅ䏸¸¨Öú½ø³Ì¡£ËùÓеÄÇëÇóÊý¾Ý¶¼Í¨¹ýÒì²½ I/O ·¢ËÍ¡£Èç¹ûÆôÓÃÁË IIS 6 ½ø³ÌÄ£ÐÍ£¬ÇëÇó½«×Ô¶¯ÔÚ¸¨Öú½ø³Ì (w3wp.exe) ÖÐÅŶӣ¬´Ë¸¨Öú½ø³ÌÓÃÓÚ´¦ÀíÓ¦ÓóÌÐòËùÊôµÄ IIS Ó¦ÓóÌÐò³Ø¡£IIS 6 ¸¨Öú½ø³Ì²»Á˽â ASP.NET ºÍÍйܴúÂëµÄÈκÎÇé¿ö£¬ËüÖ»ÊÇ´¦Àí *.ASPx À©Õ¹²¢¼ÓÔØ ASPnet_isapi Ä£¿é¡£µ± ASP.NET ISAPI ÔÚ IIS 6 ½ø³ÌÄ£ÐÍÖÐÔËÐÐʱ£¬ËüµÄ¹¤×÷·½Ê½ÓÐËù²»Í¬£¬½öÔÚ w3wp.exe ¸¨Öú½ø³ÌµÄÉÏÏÂÎÄÖмÓÔØ CLR¡£

¡¡¡¡ÊÕµ½ÇëÇóºó£¬ASP.NET ¸¨Öú½ø³Ì½«Í¨Öª ASP.NET ISAPI£¬Ëü½«ÎªÇëÇó·þÎñ¡£Í¨ÖªÍ¨¹ýͬ²½ I/O ʵÏÖ¡£Ö®ËùÒÔʹÓÃͬ²½Ä£ÐÍ£¬ÊÇÒòΪÇëÇóÖ»ÓÐÔÚ ISAPI ÄÚ²¿ÇëÇó±íÖб»±ê¼ÇΪ¡°executing¡±£¬¸¨Öú½ø³Ì²ÅÄÜ¿ªÊ¼´¦ÀíËü¡£Èç¹ûÇëÇóÒѾ­ÓÉÌØÊâµÄ¸¨Öú½ø³Ì½øÐд¦Àí£¬Ôò²»ÄÜÔÙ½«ËüÖ¸¶¨µ½ÆäËû½ø³Ì£¬³ý·Çԭʼ½ø³ÌÒÑÈ¡Ïû¡£

ÔÚ¸¨Öú½ø³ÌµÄÉÏÏÂÎÄÖÐÖ´ÐÐÇëÇó¡£ÓÐʱ£¬¸¨Öú½ø³Ì¿ÉÄÜÐèÒª»Øµ÷ ISAPI ÒÔÍê³ÉÇëÇó£¬Ò²¾ÍÊÇÐèҪ˵ö¾Ù·þÎñÆ÷±äÁ¿¡£ÕâÖÖÇé¿öÏ£¬¸¨Öú½ø³Ì½«Ê¹ÓÃͬ²½¹ÜµÀ£¬ÒòΪÕâÑù¿ÉÒÔ±£³ÖÇëÇó´¦ÀíÂß¼­µÄ˳Ðò¡£

¡¡¡¡Íê³Éºó£¬ÏìÓ¦±»·¢Ë͵½´ò¿ªÁËÒì²½¹ÜµÀµÄ ASPnet_isapi¡£ÏÖÔÚ£¬ÇëÇóµÄ״̬±äΪ¡°Done¡±£¬Ö®ºó½«´ÓÇëÇó±íÖб»É¾³ý¡£Èç¹û¸¨Öú½ø³Ì±ÀÀ££¬ÕýÔÚ´¦ÀíµÄËùÓÐÇëÇóÈÔ½«±£³Ö¡°executing¡±×´Ì¬²¢³ÖÐøÒ»¶Îʱ¼ä¡£Èç¹û ASPnet_isapi ¼ì²âµ½¸¨Öú½ø³ÌÒÑÈ¡Ïû£¬Ëü½«×Ô¶¯ÖÕÖ¹ÇëÇó²¢ÊÍ·ÅËùÓÐÏà¹ØµÄ IIS ×ÊÔ´¡£

¡¡¡¡ÒÔÉÏ˵Ã÷ÊÇָĬÈ쵀 ASP.NET ½ø³ÌÄ£ÐÍ£¬¼´ÔÚ IIS 5.x ÖÐÔËÐеŤ×÷Ä£ÐÍ¡£IIS 6£¨Windows Server 2003 Ìṩ£©µÄĬÈϹ¤×÷·½Ê½¶Ô ASP.NET ½ø³ÌÄ£ÐÍÒ²ÓÐÓ°Ïì¡£µ±¼¯³ÉÔÚ IIS 6.0 ÖÐʱ£¬ASP.NET 1.1 »á×Ô¶¯µ÷Õû×Ô¼ºµÄ¹¤×÷·½Ê½ÒÔÊÊÓ¦ËÞÖ÷»·¾³¡£Õâʱ£¬²»ÔÙÐèҪʹÓà ASPnet_wp ¸¨Öú½ø³Ì£¬machine.config ÎļþÖж¨ÒåµÄijЩÅäÖòÎÊýÒ²±»ºöÂÔ¡£´Ó ASP.NET µÄ½Ç¶ÈÀ´¿´£¬IIS 6 µÄ×î´ó¸Ä±äÊÇÓйØÇëÇóµÄÒ»Çж¼ÔÚ ASPnet_isapi µÄ¿ØÖÆÖ®Ï£¬ÇÒ¶¼´¦ÔÚ w3wp.exe ¸¨Öú½ø³ÌµÄÉÏÏÂÎÄÖС£¸¨Öú½ø³ÌµÄÕÊ»§ÊÇΪ Web Ó¦ÓóÌÐòËùÊôµÄÓ¦ÓóÌÐò³ØÉèÖõÄÕÊ»§¡£Ä¬ÈÏÇé¿öÏ£¬¸ÃÕÊ»§ÊÇ NETWORKSERVICE—£¬ËüÊÇÒ»¸öÄÚÖõÄÈõÕÊ»§£¬ÔÚ¹¦ÄÜÉÏÓë ASPNET µÈ¼Û¡£

¡¡¡¡¸¨Öú½ø³ÌÊÜÒ»¸öÃûΪ½ø³Ì»ØÊÕ (Recycling) µÄ¹¦ÄܵĿØÖÆ¡£½ø³Ì»ØÊÕ¾ßÓÐ ASPnet_isapi ¹¦ÄÜ£¬µ±ÏÖÓнø³ÌÏûºÄµÄÄÚ´æÌ«¶à¡¢ÏìӦ̫Âý»ò¹ÒÆðʱ¿ÉÒÔ×Ô¶¯Æô¶¯Ð½ø³Ì¡£³öÏÖÕâÖÖÇé¿öʱ£¬ÐÂÇëÇó½«ÓÉÐÂʵÀý´¦Àí£¬ÐÂʵÀý´Ó¶ø±ä³ÉеĻ½ø³Ì¡£µ«ÊÇ£¬Ö¸¶¨¸ø¾É½ø³ÌµÄËùÓÐÇëÇóÈÔ±£³Ö¹ÒÆð״̬¡£Èç¹û¾É½ø³Ì½áÊøÁË¹ÒÆðµÄÇëÇó²¢½øÈë¿ÕÏÐ״̬£¬¸Ã½ø³Ì¼´ÖÕÖ¹¡£Èç¹û¸¨Öú½ø³Ì±ÀÀ££¬»òÕßÓÉÓÚÆäËûÔ­ÒòÍ£Ö¹´¦ÀíÇëÇó£¬ÔòËùÓÐ¹ÒÆðµÄÇëÇ󽫱»ÖØÐÂÖ¸¶¨¸øÐ½ø³Ì¡£

¡¡¡¡¾¡¹Ü ASP.NET ISAPI ºÍ¸¨Öú½ø³ÌÊÇ ASP.NET ÔËÐÐʱ½á¹¹µÄÖ÷Òª×é³É²¿·Ö£¬µ«»¹ÓÐÆäËûһЩ¿ÉÖ´ÐÐÎļþÒ²·¢»Ó×Å×÷Óá£Ï±íÁгöÁËËùÓÐÕâЩ×é¼þ¡£

¡¡¡¡±í 1£º¹¹³É ASP.NET ÔËÐÐʱ»·¾³µÄ¿ÉÖ´ÐÐÎļþ

Ãû³Æ ÀàÐÍ ÕÊ»§

ASPnet_isapi.dll Win32 DLL£¨ISAPI À©Õ¹£© LOCAL SYSTEM

ASPnet_wp.exe Win32 EXE ASPNET

ASPnet_filter.dll Win32 DLL£¨ISAPI ɸѡÆ÷£© LOCAL SYSTEM

ASPnet_state.exe Win32 NT Service ASPNET

¡¡¡¡ASPnet_filter.dll ×é¼þÊÇÒ»¸öСµÄ Win32 ISAPI ɸѡÆ÷£¬ÓÃÀ´±¸·Ý ASP.NET Ó¦ÓóÌÐòµÄÎÞ Cookie »á»°×´Ì¬¡£ÔÚ Windows Server 2003 ÖУ¬µ±ÆôÓà IIS 6 ½ø³ÌÄ£ÐÍʱ£¬ASPnet_filter.dll »¹½«É¸Ñ¡³ö Bin Ŀ¼ÖжԷǿÉÖ´ÐÐ×ÊÔ´µÄÇëÇó¡£

¡¡¡¡ASPnet_state.exe µÄ×÷ÓÃ¶Ô Web Ó¦ÓóÌÐò¸üÎªÖØÒª£¬ÒòΪËüÓÃÓÚ¹ÜÀí»á»°×´Ì¬¡£¸ÃÏî·þÎñÊÇ¿ÉÑ¡µÄ£¬¿ÉÒÔÓÃÀ´ÔÚ Web Ó¦ÓóÌÐòÄÚ´æ¿Õ¼äÖ®Íâ±£´æ»á»°×´Ì¬Êý¾Ý¡£¸Ã¿ÉÖ´ÐÐÎļþÊÇÒ»ÖÖ NT ·þÎñ£¬¼È¿ÉÒÔÔÚ±¾µØÔËÐУ¬Ò²¿ÉÒÔÔ¶³ÌÔËÐС£µ±¸Ã·þÎñ±»¼¤»îºó£¬¿ÉÒÔ½« ASP.NET Ó¦ÓóÌÐòÅäÖÃΪ½«ËùÓлỰÐÅÏ¢±£´æÔڴ˽ø³ÌµÄÄÚ´æÖС£Ò»ÖÖÀàËÆµÄ·½°¸ÊÇÌṩ¸üΪ¿É¿¿µÄÊý¾Ý´æ´¢·½Ê½£¬²»Êܽø³Ì»ØÊÕºÍ ASP.NET Ó¦ÓóÌÐò¹ÊÕϵÄÓ°Ïì¡£¸Ã·þÎñÔÚ ASPNET ±¾µØÕÊ»§ÏÂÔËÐУ¬µ«¿ÉÒÔʹÓ÷þÎñ¿ØÖƹÜÀíÆ÷ (Service Control Manager) ½Ó¿ÚÀ´ÅäÖÃËü¡£

¡¡¡¡ÁíÒ»¸öÓ¦¸Ã½éÉܵĿÉÖ´ÐÐÎļþÊÇ ASPnet_regiis.exe£¬¾¡¹ÜÑϸñÀ´½²£¬Ëü²¢²»ÊôÓÚ ASP.NET ÔËÐÐʱ½á¹¹¡£¸ÃʵÓóÌÐò¿ÉÒÔÓÃÀ´ÅäÖû·¾³£¬ÒÔÔÚһ̨¼ÆËã»úÉϲ¢ÐÐÖ´Ðв»Í¬°æ±¾µÄ ASP.NET£¬»¹¿ÉÓÃÓÚάÐÞ IIS ºÍ ASP.NET Ë𻵵ÄÅäÖ᣸ÃʵÓóÌÐòµÄ¹¤×÷·½Ê½ÊǸüд洢ÔÚ IIS ÅäÖÃÊý¾Ý¿âµÄ¸ùĿ¼ºÍ×ÓĿ¼ÖеĽű¾Ó³Éä¡£½Å±¾Ó³ÉäÊÇ×ÊÔ´ÀàÐÍºÍ ASP.NET Ä£¿éÖ®¼äµÄÒ»ÖÖ¹ØÁª¹ØÏµ¡£×îºó£¬»¹¿ÉÒÔʹÓøù¤¾ßÀ´ÏÔʾÒѰ²×°µÄ ASP.NET °æ±¾µÄ״̬£¬Ö´ÐÐÆäËûÅäÖòÙ×÷£¬ÈçÊÚÓè¶ÔÌØ¶¨Îļþ¼ÐµÄ NTFS ȨÏÞ¡¢´´½¨¿Í»§½Å±¾Ä¿Â¼¡£

¡¡¡¡Web Garden Ä£ÐÍ

¡¡¡¡Web Garden Ä£ÐÍ¿ÉÒÔͨ¹ý machine.config ÎļþÖÐµÄ £¼processModel£¾ ²¿·Ö½øÐÐÅäÖá£Çë×¢Ò⣬£¼processModel£¾ ²¿·ÖÊÇΨһ²»ÄÜ·ÅÔÚÓ¦ÓóÌÐòÌØ¶¨µÄ web.config ÎļþÖеÄÅäÖò¿·Ö¡£Õâ¾ÍÊÇ˵£¬Web Garden ģʽ¿ÉÒÔÓ¦Óõ½¼ÆËã»úÖÐÔËÐеÄËùÓÐÓ¦ÓóÌÐò¡£µ«Í¨¹ýʹÓà machine.config Ô´ÎļþÖÐµÄ £¼location£¾ ½Úµã£¬¿ÉÒÔÕë¶Ô¸÷¸öÓ¦ÓóÌÐòµ÷½Ú¼ÆËã»úµÄÉèÖá£

¡¡¡¡£¼processModel£¾ ²¿·ÖÓÐÁ½¸öÊôÐÔ¿ÉÒÔÓ°Ïì Web Garden Ä£ÐÍ£¬ËüÃÇÊÇ webGarden ºÍ cpuMask¡£webGarden ÊôÐÔ½ÓÊܲ¼¶ûÖµ£¬±íʾÊÇ·ñʹÓÃÁ˶à¸ö¸¨Öú½ø³Ì£¨Ò»¸öÏà¹ØµÄ CPU ¶ÔÓ¦Ò»¸ö½ø³Ì£©¡£Ä¬ÈÏÇé¿öÏ£¬¸ÃÊôÐÔµÄֵΪ false¡£cpuMask ÊôÐÔ±£´æÒ»¸ö Dword Öµ£¬¸ÃÖµµÄ¶þ½øÖƱíʾΪÄܹ»ÔËÐÐ ASP.NET ¸¨Öú½ø³ÌµÄ CPU ÌṩÁËλÆÁ±Î¡£ÆäĬÈÏֵΪ -1 (0xFFFFFF)£¬±íʾ¿ÉÒÔʹÓÃËùÓпÉÓÃµÄ CPU¡£Èç¹û webGarden ÊôÐÔΪ false£¬Ôò cpuMask ÊôÐÔµÄÄÚÈݽ«±»ºöÂÔ¡£cpuMask ÊôÐÔ»¹ÎªÕýÔÚÔËÐÐµÄ ASPnet_wp.exe µÄ¸±±¾ÊýÉèÖÃÁËÉÏÏÞ¡£

¡¡¡¡³£ÑÔµÀ¡°ÉÁ¹âµÄ²»¶¼Êǽð×Ó¡±£¬ÓÃÔÚÕâÀïºÜºÏÊÊ¡£Web Garden ģʽʹµÃ¶à¸ö¸¨Öú½ø³Ì¿ÉÒÔͬʱÔËÐС£µ«ÊÇ£¬ÐèҪעÒâµÄÊÇËùÓнø³Ì¶¼»áÓÐ×Ô¼ºµÄÓ¦ÓóÌÐò״̬¡¢½ø³ÌÄڻỰ״̬¡¢ASP.NET »º´æ¡¢¾²Ì¬Êý¾ÝÒÔ¼°ÔËÐÐÓ¦ÓóÌÐòËùÐèµÄÆäËûÄÚÈÝ¡£ÆôÓà Web Garden ģʽ֮ºó£¬ASP.NET ISAPI ½«¸ù¾Ý CPU µÄÊýÁ¿¾¡¿ÉÄÜ¶àµØÆô¶¯¸¨Öú½ø³Ì£¬Ã¿¸ö¸¨Öú½ø³Ì¶¼ÊÇÏÂÒ»½ø³ÌµÄÍêÕû¿Ë¡£¨Ã¿Ò»½ø³Ì¶¼ÓëÏàÓ¦µÄ CPU ÃÜÇÐÏà¹Ø£©¡£ÎªÆ½ºâ¹¤×÷¸ººÉ£¬´«ÈëµÄÇëÇóÒÔµ¥Ñ­»·µÄ·½Ê½ÔÚÔËÐеĽø³ÌÖ®¼ä½øÐл®·Ö¡£¸¨Öú½ø³Ì¾ÍÏóÔÚµ¥´¦ÀíÆ÷ÖÐÒ»Ñù±»»ØÊÕ¡£Çë×¢Ò⣬ASP.NET ¼Ì³ÐÁ˲Ù×÷ϵͳÖÐËùÓÐµÄ CPU ʹÓÃÏÞÖÆ£¬²¢ÇÒ²»°üÀ¨ÊµÏÖÏÞÖÆµÄ×Ô¶¨ÒåÓïÒå¡£

¡¡¡¡×ÜÖ®£¬Web Garden Ä£ÐͲ¢²»ÊÊÓÃÓÚËùÓÐÓ¦ÓóÌÐò¡£Ó¦ÓóÌÐòµÄ״̬Խ¶à£¬ÆäµÄÐÔÄÜËðʧҲԽ¶à¡£¹¤×÷Êý¾Ý´æ´¢ÔÚ¹²ÏíÄÚ´æµÄ¿éÖУ¬ÒÔ±ãÒ»¸ö½ø³ÌÊäÈëµÄ±ä»¯¿ÉÒÔÁ¢¼´±»ÆäËû½ø³ÌµÃÖª¡£µ«ÊÇ£¬´¦ÀíÇëÇóʱ£¬¹¤×÷Êý¾Ý±»¸´ÖƵ½½ø³ÌµÄÉÏÏÂÎÄÖС£Òò´Ë£¬¸÷¸ö¸¨Öú½ø³Ì½«´¦Àí×Ô¼ºµÄ¹¤×÷Êý¾Ý£¬¶øÓ¦ÓóÌÐòµÄ״̬Խ¶à£¬ÐÔÄÜËðʧ¾ÍÔ½´ó¡£¼øÓÚ´Ë£¬×Ðϸ¡¢Ã÷ÖǵÄÓ¦ÓóÌÐò»ù×¼²âÊÔÊǾø¶Ô±ØÒªµÄ¡£

¡¡¡¡Ö»ÓÐÖØÆô IIS ºó£¬¶ÔÅäÖÃÎļþÖÐ £¼processModel£¾ ²¿·ÖËù×öµÄ¸ü¸Ä²Å»áÉúЧ¡£ÔÚ IIS 6 ÖУ¬Web Garden ģʽµÄ²ÎÊý±£´æÔÚ IIS ÅäÖÃÊý¾Ý¿âÖУ¬webGarden ºÍ cpuMask ÊôÐÔ±»ºöÂÔ¡£

¡¡¡¡HTTP ¹ÜµÀ

¡¡¡¡ASP.NET ISAPI À©Õ¹Æô¶¯¸¨Öú½ø³Ìºó£¬Ëü½«´«µÝ²¿·ÖÃüÁîÐвÎÊý¡£¸¨Öú½ø³ÌʹÓÃÕâЩ²ÎÊýÀ´Ö´ÐмÓÔØ CLR ǰÐèÒªÖ´ÐеÄÈÎÎñ¡£´«µÝµÄÖµ°üÀ¨£ºCOM ºÍ DCOM °²È«ÐÔËùÒªÇóµÄÉí·ÝÑéÖ¤µÈ¼¶¡¢¿ÉÒÔʹÓõÄÃüÃû¹ÜµÀµÄÊýÁ¿ºÍ IIS ½ø³Ì±êʶ¡£ÃüÃû¹ÜµÀµÄÃû³ÆÊÇʹÓà IIS ½ø³Ì±êʶºÍÔÊÐíµÄ¹ÜµÀÊýËæ»úÉú³ÉµÄ¡£¸¨Öú½ø³Ì²»½ÓÊÕ¿ÉÓùܵÀµÄÃû³Æ£¬µ«¿ÉÒÔ½ÓÊÕʶ±ð¹ÜµÀÃû³ÆËùÐèµÄÐÅÏ¢¡£

¡¡¡¡COM ºÍ DCOM °²È«ÐÔÓë Microsoft? .NET Framework ÓкιØÏµ£¿Êµ¼ÊÉÏ£¬CLR ÊÇ×÷Ϊ COM ¶ÔÏóÌṩµÄ¡£¸ü׼ȷµØËµ£¬CLR ±¾Éí²»ÊÇÓÉ COM ´úÂë¹¹³ÉµÄ£¬µ«ÊÇÖ¸Ïò CLR µÄ½Ó¿ÚÈ´ÊÇÒ»¸ö COM ¶ÔÏó¡£Òò´Ë£¬¸¨Öú½ø³Ì¼ÓÔØ CLR µÄ·½Ê½Óë¼ÓÔØ COM ¶ÔÏóµÄ·½Ê½Ïàͬ¡£

¡¡¡¡µ± ASPX ÇëÇóÓöµ½ IIS ʱ£¬Web ·þÎñÆ÷½«¸ù¾ÝÑ¡ÔñµÄÉí·ÝÑé֤ģÐÍ£¨ÄäÃû¡¢Windows¡¢Basic »ò Digest£©À´·ÖÅäÒ»¸öÁîÅÆ¡£µ±¸¨Öú½ø³ÌÊÕµ½Òª´¦ÀíµÄÇëÇóʱ£¬ÁîÅÆ±»´«µÝµ½¸¨Öú½ø³Ì¡£ÇëÇóÓɸ¨Öú½ø³ÌÖеÄÏ̻߳ñÈ¡¡£¸ÃÏ̴߳Ó×î³õ»ñÈ¡´«ÈëÇëÇóµÄ IIS Ï̼̳߳ÐÉí·ÝÁîÅÆ¡£ÔÚ ASPnet_wp.exe ÖУ¬¸ºÔð´¦ÀíÇëÇóµÄʵ¼ÊÕÊ»§È¡¾öÓÚÔÚÌØÊâµÄ ASP.NET Ó¦ÓóÌÐòÖÐÊÇÈçºÎÅäÖÃÄ£ÄâµÄ¡£Èç¹ûÄ£Äâ±»½ûÓã¨Ä¬ÈÏÉèÖã©£¬ÔòÏ߳̽«ÔÚ¸¨Öú½ø³ÌµÄÕÊ»§ÏÂÔËÐС£Ä¬ÈÏÇé¿öÏ£¬¸ÃÕÊ»§ÔÚ ASP.NET ½ø³ÌÄ£ÐÍÖÐΪ ASPNET£¬ÔÚ IIS 6 ½ø³ÌÄ£ÐÍÖÐΪ NETWORKSERVICE¡£ÕâÁ½¸öÕÊ»§¶¼ÊÇ¡°Èõ¡±ÕÊ»§£¬ÌṩµÄ¹¦ÄܱȽÏÓÐÏÞ£¬¿ÉÒÔÓÐЧµÖµ²»Ø¸´ÐÔ¹¥»÷ (Revert-to-self Attack)¡££¨»Ø¸´ÐÔ¹¥»÷ÊÇÖ¸½«Ä£ÄâµÄ¿Í»§¶ËµÄ°²È«ÐÔÁîÅÆ»Ø¸´µ½¸¸½ø³ÌÁîÅÆ¡£Îª¸¨Öú½ø³Ì·ÖÅäÈõÕÊ»§¿ÉÒÔ´ì°Ü´ËÀ๥»÷¡££©

¡¡¡¡¸ß¶È¸ÅÀ¨ÆðÀ´£¬ASP.NET ¸¨Öú½ø³ÌÍê³ÉµÄÒ»ÏîÖ÷ÒªÈÎÎñ¾ÍÊǽ«ÇëÇ󽻸øÒ»ÏµÁгÆÎªµÄ HTTP ¹ÜµÀµÄÍйܶÔÏó¡£Òª¼¤»î HTTP ¹ÜµÀ£¬¿ÉÒÔ´´½¨Ò»¸ö HttpRuntime ÀàµÄÐÂʵÀý£¬È»ºóµ÷ÓÃÆä ProcessRequest ·½·¨¡£ÈçǰËùÊö£¬ASP.NET ÖÐʼÖÕÖ»ÔËÐÐÒ»¸ö¸¨Öú½ø³Ì£¨³ý·ÇÆôÓÃÁË Web Garden Ä£ÐÍ£©£¬¸Ã½ø³ÌÔÚ¶ÀÁ¢µÄ AppDomain ÖйÜÀíËùÓÐµÄ Web Ó¦ÓóÌÐò¡£Ã¿¸ö AppDomain ¶¼ÓÐ×Ô¼ºµÄ HttpRuntime ÀàʵÀý£¬¼´¹ÜµÀÖеÄÊäÈëµã¡£HttpRuntime ¶ÔÏó³õʼ»¯Ò»ÏµÁÐÓÐÖúÓÚʵÏÖÇëÇóµÄÄÚ²¿¶ÔÏó¡£Helper ¶ÔÏó°üÀ¨»º´æ¹ÜÀíÆ÷£¨Cache ¶ÔÏ󣩺ÍÄÚ²¿Îļþϵͳ¼àÊÓÆ÷£¨ÓÃÓÚ¼ì²â¹¹³ÉÓ¦ÓóÌÐòµÄÔ´ÎļþµÄ¸ü¸Ä£©¡£HttpRuntime ΪÇëÇó´´½¨ÉÏÏÂÎÄ£¬²¢ÓÃÓëÇëÇóÏà¹ØµÄ HTTP ÐÅÏ¢Ìî³äÉÏÏÂÎÄ¡£ÉÏÏÂÎÄÓà HttpContext ÀàµÄʵÀýÀ´±íʾ¡£

¡¡¡¡ÁíÒ»¸öÔÚ HTTP ÔËÐÐʱµÄÉèÖóõÆÚ´´½¨µÄ Helper ¶ÔÏóÊÇÎı¾ÊéдÆ÷£¬ÓÃÓÚ°üº¬ä¯ÀÀÆ÷µÄÏìÓ¦Îı¾¡£Îı¾ÊéдÆ÷ÊÇ HttpWriter ÀàµÄʵÀý£¬´Ë¶ÔÏó¶ÔÒ³Ãæ´úÂëÒÔ±à³Ì·½Ê½·¢Ë͵ÄÎı¾½øÐлº´æ¡£HTTP ÔËÐÐʱ±»³õʼ»¯ºó£¬Ëü½«²éÕÒʵÏÖÇëÇóµÄÓ¦ÓóÌÐò¶ÔÏó¡£Ó¦ÓóÌÐò¶ÔÏóÊÇ HttpApplication ÀàµÄʵÀý£¬¸ÃÀà¾ÍÊÇ global.asax Îļþ±³ºóµÄÀà¡£global.asax ÔÚ±à³ÌʱÊÇ¿ÉÑ¡µÄ£¬µ«ÔÚ¹¹½¨½á¹¹Ê±ÊDZØÐèµÄ¡£Òò´Ë£¬Èç¹ûÓ¦ÓóÌÐòÖÐûÓй¹½¨À࣬Ôò±ØÐëʹÓÃĬÈ϶ÔÏó¡£ASP.NET ÔËÐÐʱ°üÀ¨¼¸¸öÖм乤³§À࣬¿ÉÒÔÓÃÀ´²éÕÒ²¢·µ»ØÓÐЧµÄ Handler ¶ÔÏóÒÔ´¦ÀíÇëÇó¡£Õû¸ö¹ý³ÌÖÐÓõ½µÄµÚÒ»¸ö¹¤³§ÀàÊÇ HttpApplicationFactory¡£ËüµÄÖ÷ÒªÈÎÎñÊÇʹÓà URL ÐÅÏ¢À´²éÕÒ URL ÐéÄâĿ¼ºÍ»ã¼¯µÄ HttpApplication ¶ÔÏóÖ®¼äµÄÆ¥Åä¹ØÏµ¡£

¡¡¡¡Ó¦ÓóÌÐò¹¤³§ÀàµÄÐÐΪ¿ÉÒÔ¸ÅÀ¨ÎªÒÔϼ¸µã£º

¡¡¡¡¹¤³§Ààά»¤ HttpApplication ¶ÔÏ󳨣¬²¢Ê¹ÓÃËüÃÇÀ´´¦ÀíÓ¦ÓóÌÐòµÄÇëÇ󡣳صÄÊÙÃüÓëÓ¦ÓóÌÐòµÄÊÙÃüÏàͬ¡£

¡¡¡¡Ó¦ÓóÌÐòµÄµÚÒ»¸öÇëÇóµ½´ïʱ£¬¹¤³§ÀàÌáÈ¡ÓйØÓ¦ÓóÌÐòÀàÐ͵ÄÐÅÏ¢£¨global.asax Àࣩ¡¢ÉèÖÃÓÃÓÚ¼àÊÓ¸ü¸ÄµÄÎļþ¡¢´´½¨Ó¦ÓóÌÐò״̬²¢´¥·¢ Application_OnStart ʼþ¡£

¡¡¡¡¹¤³§Àà´Ó³ØÖлñȡһ¸ö HttpApplication ʵÀý£¬²¢½«Òª´¦ÀíµÄÇëÇó·ÅÈëʵÀýÖС£Èç¹ûûÓпÉÓõĶÔÏó£¬Ôò´´½¨Ò»¸öÐ嵀 HttpApplication ¶ÔÏó¡£Òª´´½¨ HttpApplication ¶ÔÏó£¬ÐèÒªÏÈÍê³É global.asax Ó¦ÓóÌÐòÎļþµÄ±àÒë¡£

¡¡¡¡HttpApplication ¿ªÊ¼´¦ÀíÇëÇ󣬲¢ÇÒÖ»ÄÜÔÚÍê³ÉÕâ¸öÇëÇóºó²ÅÄÜ´¦ÀíеÄÇëÇó¡£Èç¹ûÊÕµ½À´×Ôͬһ×ÊÔ´µÄÐÂÇëÇó£¬ÔòÓɳØÖÐµÄÆäËû¶ÔÏóÀ´´¦Àí¡£

¡¡¡¡Ó¦ÓóÌÐò¶ÔÏóÔÊÐíËùÓÐ×¢²áµÄ HTTP Ä£¿é¶ÔÇëÇó½øÐÐÔ¤´¦Àí£¬²¢ÕÒ³ö×îÊʺϴ¦ÀíÇëÇóµÄ´¦Àí³ÌÐòÀàÐÍ¡£Õâͨ¹ý²éÕÒÇëÇóµÄ URL µÄÀ©Õ¹ºÍÅäÖÃÎļþÖеÄÐÅÏ¢À´Íê³É¡£

¡¡¡¡HTTP ´¦Àí³ÌÐòÊÇһЩʵÏÖ IHttpHandler ½Ó¿ÚµÄÀà¡£.NET Framework Ϊ³£¼ûµÄ×ÊÔ´ÀàÐÍÌṩÁËһЩԤ¶¨ÒåµÄ´¦Àí³ÌÐò£¬°üÀ¨ ASPX Ò³ÃæºÍ Web ·þÎñ¡£machine.config ÎļþÖÐµÄ £¼httpHandlers£¾ ²¿·Ö¶¨ÒåÁË HttpApplication ¶ÔÏó±ØÐëʵÀý»¯²ÅÄÜ´¦ÀíÌØ¶¨ÀàÐÍ×ÊÔ´µÄÇëÇóµÄÀàÃû¡£Èç¹û Helper ÀàÊÇÒ»¸ö´¦Àí³ÌÐò¹¤³§£¬GetHandler ·½·¨½«È·¶¨ÒªÊ¹ÓõĴ¦Àí³ÌÐòÀàÐÍ¡£Õâʱ£¬½«´ÓÒ»×éÀàËÆµÄ¶ÔÏóÖлñÈ¡Êʵ±ÀàÐ͵Ĵ¦Àí³ÌÐò£¬²¢¶ÔÆä½øÐÐÅäÖÃÒÔ´¦ÀíÇëÇó¡£

¡¡¡¡IHttpHandler ½Ó¿ÚÌṩÁËÁ½¸ö·½·¨£ºIsReusable ºÍ ProcessRequest¡£Ç°Õß½«·µ»ØÒ»¸ö²¼¶ûÖµ£¬±íʾ´¦Àí³ÌÐòÊÇ·ñ¿ÉÒÔ±»»ã¼¯¡££¨´ó¶àÊýÔ¤¶¨ÒåµÄ´¦Àí³ÌÐò¶¼Êǻ㼯µÄ£¬µ«ÊÇÄú¿ÉÒÔ×ÔÐж¨Òåÿ´Î¶¼ÐèÒªÐÂʵÀýµÄ´¦Àí³ÌÐò¡££©ProcessRequest ·½·¨°üº¬´¦ÀíÌØ¶¨ÀàÐÍ×ÊÔ´ËùÐèµÄËùÓÐÂß¼­¡£ÀýÈ磬ASPX Ò³ÃæµÄ´¦Àí³ÌÐò»ùÓÚÒÔÏÂα´úÂ룺

private void ProcessRequest()

{

// È·¶¨ÇëÇóÊÇ·ñÊǻط¢ (postback)

IsPostBack = DeterminePostBackMode();

// ´¥·¢ ASPX Ô´´úÂëµÄ Page_Init ʼþ

PageInit();

// ¼ÓÔØ ViewState£¬´¦ÀíÒÑ·¢Ë͵ÄÖµ¡£

if (IsPostBack) {

LoadPageViewState();

ProcessPostData();

}

// ´¥·¢ ASPX Ô´´úÂëµÄ Page_Load ʼþ

PageLoad();

// 1) Ôٴδ¦ÀíÒÑ·¢Ë͵ÄÖµ£¨µ±

// ¶¯Ì¬´´½¨¿Ø¼þʱ£©

// 2) ½«ÊôÐÔ¸ü¸ÄµÄ·þÎñÆ÷¶ËʼþÌáÉýΪÊäÈëÇý¶¯µÄ

// ¿Ø¼þ£¨¼´¸´Ñ¡¿òµÄ״̬¸Ä±ä£©

// 3) Ö´ÐÐÓë»Ø·¢Ê¼þÏà¹ØµÄËùÓдúÂë

if (IsPostBack) {

ProcessPostDataSecondTry();

RaiseChangedEvents();

RaisePostBackEvent();

}

// ´¥·¢ ASPX Ô´´úÂëµÄ Page_PreRender ʼþ

PreRender();

// ½«¿Ø¼þµÄµ±Ç°×´Ì¬±£´æµ½ ViewState ÖÐ

SavePageViewState();

// ½«Ò³ÃæÄÚÈݳÊÏÖ¸ø HTML

RenderControl(CreateHTMLTextWriter(Response.Output));

}

¡¡¡¡ÎÞÂÛµ÷ÓõÄ×ÊÔ´ÀàÐÍÈçºÎ£¬»ùÓÚ HTTP ´¦Àí³ÌÐòµÄÄ£ÐÍÊÇÏàͬµÄ¡£Î¨Ò»Ëæ×ÊÔ´ÀàÐͱ仯¶ø±ä»¯µÄÔªËØÊÇ´¦Àí³ÌÐò¡£HttpApplication ¶ÔÏó¸ºÔð²éÕÒÓ¦¸ÃʹÓÃÄÄÖÖ´¦Àí³ÌÐòÀ´´¦ÀíÇëÇó¡£HttpApplication ¶ÔÏ󻹸ºÔð¼ì²â¶Ô¶¯Ì¬´´½¨µÄ¡¢±íʾ×ÊÔ´µÄ³ÌÐò¼¯£¨Èç .ASPx Ò³Ãæ»ò .asmx Web ·þÎñ£©Ëù½øÐеĸü¸Ä¡£Èç¹û¼ì²âµ½¸ü¸Ä£¬Ó¦ÓóÌÐò¶ÔÏó½«È·±£±àÒë²¢¼ÓÔØËùÇëÇóµÄ×ÊÔ´µÄ×îÐÂÀ´Ô´¡£

¡¡¡¡ÁÙʱÎļþºÍÒ³Ãæ³ÌÐò¼¯

¡¡¡¡ÒªÈ«ÃæÁ˽â ASP.NET HTTP ÔËÐÐʱ£¬ÈÃÎÒÃÇÀ´·ÖÎöһϵ±ÇëÇó ASP.NET Ò³ÃæÊ±£¬Îļþϵͳ²ãËù·¢ÉúµÄ±ä»¯¡£½ÓÏÂÀ´£¬Äú½«Á˽âÓÉ HTTP ¹ÜµÀµÄ¶ÔÏó¹ÜÀíºÍ¼àÊÓµÄÒ»×鶯̬´´½¨µÄÁÙʱÎļþ¡£

¡¡¡¡ËäÈ»¿ÉÒÔ½«Ò³ÃæµÄºËÐÄ´úÂë¸ôÀëÔÚ´úÂë±³ºóµÄ C# »ò Microsoft? Visual Basic? .NET ÀàÖУ¬µ«¿ÉÒÔ½« Web Ò³Ãæ±àдºÍ²¿ÊðΪ .ASPx Îı¾Îļþ¡£¶ÔÓÚÒªÏÔʾΪ URL µÄÒ³ÃæÀ´Ëµ£¬.ASPx ÎļþÔÚÓ¦ÓóÌÐòµÄ Web ¿Õ¼äÖбØÐëʼÖÕ¿ÉÓá£.ASPx ÎļþµÄʵ¼ÊÄÚÈݽ«È·¶¨Ó¦ÓóÌÐò¶ÔÏóÒª¼ÓÔØµÄ³ÌÐò¼¯£¨»ò¶à¸ö³ÌÐò¼¯£©¡£

¡¡¡¡°´ÕÕÉè¼Æ£¬HttpApplication ¶ÔÏ󽫲éÕÒÒ»¸ö¸ù¾ÝÇëÇóµÄ ASPX ÎļþÃüÃûµÄÀà¡£Èç¹ûÒ³ÃæÃüÃûΪ sample.ASPx£¬ÔòÒª¼ÓÔØµÄÏàÓ¦µÄÀàÃûΪ ASP.sample_ASPx¡£Ó¦ÓóÌÐò¶ÔÏóÔÚ Web Ó¦ÓóÌÐòµÄËùÓгÌÐò¼¯Îļþ¼ÐÖвéÕÒÕâÑùµÄÀ࣬ÕâЩÎļþ¼Ð°üÀ¨È«¾Ö³ÌÐò¼¯»º´æ (GAC)¡¢Bin ×ÓÎļþ¼ÐºÍ Temporary ASP.NET Files Îļþ¼Ð¡£Èç¹ûδÕÒµ½ÕâÑùµÄÀ࣬HTTP ½á¹¹½«·ÖÎö .ASPx ÎļþµÄÔ´´úÂ룬´´½¨Ò»¸ö C# »ò Visual Basic .NET Àࣨ¾ßÌå´´½¨ÄÄÖÖÀ࣬ȡ¾öÓÚ .ASPx Ò³ÃæÉÏÉèÖõÄÓïÑÔ£©£¬Í¬Ê±¶ÔÆä½øÐбàÒ롣д´½¨µÄ³ÌÐò¼¯µÄÃû³ÆÊÇËæ»úÉú³ÉµÄ£¬Î»ÓÚÌØ¶¨ÓÚÓ¦ÓóÌÐòµÄ×ÓÎļþ¼ÐÖУ¬Â·¾¶ÈçÏÂËùʾ£º C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files¡£

¡¡¡¡×ÓÎļþ¼Ð v1.1.4322 ÌØ¶¨ÓÚ ASP.NET 1.1¡£Èç¹ûÄúʹÓõÄÊÇ ASP.NET 1.0£¬×ÓÎļþ¼ÐµÄ°æ±¾ºÅ»áÓÐËù²»Í¬£¬¼´×ÓÎļþ¼ÐÃûΪ v1.0.3705¡£ÔٴηÃÎÊÒ³ÃæÊ±£¬³ÌÐò¼¯¾ÍÒÑ´æÔÚ£¬²»ÐèÒªÖØÐ´´½¨¡£µ«ÊÇ£¬HttpApplication ¶ÔÏóÊÇÈçºÎÈ·¶¨Ìض¨ÓÚÒ³ÃæµÄ³ÌÐò¼¯ÊÇ·ñ´æÔÚÄØ£¿Ëüÿ´Î¶¼ÒªÉ¨Ãè´óÁ¿Îļþ¼ÐÂ𣿲»£¬²¢²»ÊÇÕâÑù¡£

¡¡¡¡Ó¦ÓóÌÐò¶ÔÏóÖ»²é¿´ Temporary ASP.NET Files Îļþ¼ÐÖÐij¸öÌØÊâÎļþ¼ÐµÄÄÚÈÝ¡£¾ßÌå·¾¶£¨Ìض¨ÓÚÓ¦ÓóÌÐòµÄ·¾¶£©ÓÉ HttpRuntime.CodegenDir ÊôÐÔ·µ»Ø¡£Èç¹ûÊǵÚÒ»´Î·ÃÎÊ .ASPx Îļþ£¨¼´»¹Î´´´½¨Ò³Ãæ³ÌÐò¼¯£©£¬Ôò¸ÃÎļþ¼ÐÖоͲ»´æÔÚÒÔ ASPX Ò³ÃæÃû³Æ¿ªÍ·µÄ XML Îļþ¡£ÀýÈ磬¾ßÓж¯Ì¬³ÌÐò¼¯µÄ sample.ASPx Ò³ÃæÓ¦ÓÐÈçϵÄÌõÄ¿£º

¡¡¡¡sample.ASPx.XXXXX.XML

¡¡¡¡XXXXX ռλ·ûÊÇÒ»ÖÖÉ¢ÁдúÂ롣ͨ¹ý¶ÁÈ¡¸Ã XML ÎļþµÄÄÚÈÝ£¬Ó¦ÓóÌÐò¶ÔÏó¾Í¿ÉÒÔÁ˽âÒª¼ÓÔØµÄ³ÌÐò¼¯µÄÃû³ÆÒÔ¼°ÒªÔÚÆäÖлñÈ¡µÄÀà¡£ÒÔÏ´úÂëÆ¬¶ÎÊÇÕâÖÖ Helper ÎļþµÄµäÐÍÄÚÈÝ¡£°üº¬ ASP.sample_ASPx ÀàµÄ³ÌÐò¼¯µÄÃû³ÆÊÇ mvxvx8xr¡£

£¼preserve assem=mvxvx8xr type=ASP.sample_ASPx£¾

£¼filedep name=c:\inetpub\wwwroot\vdir\sample.ASPx /£¾

£¼/preserve£¾

¡¡¡¡µ±È»£¬Ö»ÓÐÔÚ·ÖÎö filedep ÎļþµÄÔ´´úÂëÒÔÉú³É¶¯Ì¬³ÌÐò¼¯Ê±²Å´´½¨¸ÃÎļþ¡£¶Ô filedep ÎļþËù×öµÄÈκθü¸Ä¶¼»áʹ³ÌÐò¼¯ÎÞЧ£¬ÔÚÏÂÒ»´ÎÇëÇóʱ±ØÐëÖØÐ±àÒë¡£ÐèҪעÒâµÄÊÇ£¬ÔÚ ASP.NET ¼Ü¹¹µÄδÀ´°æ±¾ÖУ¬¸ÃʵÏÖ¹ý³Ì¿ÉÄÜ»áÓнϴó¸Ä±ä¡£²»ÂÛʲôԭÒò£¬Ö»ÒªÄú¾ö¶¨ÔÚµ±Ç°Ó¦ÓóÌÐòÖÐʹÓÃËü£¬¶¼±ØÐëÊ®·ÖСÐÄ¡£

¡¡¡¡ÓÉÓÚ¸üжøÒªÎªÒ³Ãæ´´½¨ÐµijÌÐò¼¯Ê±£¬ASP.NET ½«ÑéÖ¤ÊÇ·ñ¿ÉÒÔɾ³ý¾ÉµÄ³ÌÐò¼¯¡£Èç¹û¾ÉµÄ³ÌÐò¼¯Ö»°üº¬Ð޸ĺóµÄÒ³ÃæµÄÀ࣬ASP.NET ½«ÊÔͼɾ³ý²¢Ìæ»»¸Ã³ÌÐò¼¯£¬·ñÔò½«ÔÚ±£Áô¾É³ÌÐò¼¯µÄÇé¿öÏ´´½¨Ò»¸öгÌÐò¼¯¡£

¡¡¡¡ÔÚɾ³ý¹ý³ÌÖУ¬ASP.NET ¿ÉÄܻᷢÏÖ³ÌÐò¼¯ÎļþÒѱ»¼ÓÔØ²¢Ëø¶¨¡£ÕâÖÖÇé¿öÏ£¬¿ÉÒÔΪ¾É³ÌÐò¼¯Ìí¼ÓÒ»¸ö¡°.DELETE¡±À©Õ¹Ãû£¬ÒÔ½«ÆäÖØÐÂÃüÃû¡££¨×¢Ò⣬ËùÓÐ Windows Îļþ¶¼¿ÉÒÔÔÚʹÓùý³ÌÖÐÖØÐÂÃüÃû¡££©Ö»ÒªÓ¦ÓóÌÐòÖØÐÂÆô¶¯£¨ÀýÈ磬ÓÉÓÚ¶Ôij¸öÓ¦ÓóÌÐòÎļþÈç global.asax ºÍ web.config ½øÐÐÁ˸ü¸Ä£©£¬ÕâЩÁÙʱµÄ .DELETE Îļþ¾Í½«±»É¾³ý¡£µ«ÔÚ´¦ÀíÏÂÒ»¸öÇëÇóʱ£¬ASP.NET ÔËÐÐʱ²»»áɾ³ýÕâЩÎļþ¡£

¡¡¡¡Çë×¢Ò⣬ĬÈÏÇé¿öÏ£¬ÔÚÕû¸öÓ¦ÓóÌÐòÖØÐÂÆô¶¯Ö®Ç°£¬Ã¿¸ö ASP.NET Ó¦ÓóÌÐò×î¶à¿ÉÒÔÖØÐ±àÒë 15 ¸öÒ³Ãæ£¬Í¬Ê±»áËðʧһЩ»á»°ºÍÓ¦ÓóÌÐòÊý¾Ý¡£µ±×î½üµÄ±àÒë´ÎÊý³¬¹ýÁË £¼httpRuntime£¾ ²¿·ÖµÄ numRecompilesBeforeAppRestart ÊôÐÔÖÐÉèÖõÄãÐֵʱ£¬½«Ð¶ÔØ AppDomain£¬²¢ÖØÐÂÆô¶¯Ó¦ÓóÌÐò¡£»¹Òª×¢Ò⣬ÔÚ .NET Framework ÖУ¬ÄúÎÞ·¨Ð¶Ôص¥¸ö³ÌÐò¼¯¡£AppDomain ÊÇ¿ÉÒÔ´Ó CLR Ð¶ÔØµÄ×îСµÄ´úÂë¿é¡£

¡¡¡¡Ð¡½á

¡¡¡¡ASP.NET Ó¦ÓóÌÐòÓÐÁ½´óÌØÕ÷£º½ø³ÌÄ£ÐͺÍÒ³Ãæ¶ÔÏóÄ£ÐÍ¡£ASP.NET ÌáǰʹÓÃÁË IIS 6.0 µÄһЩ¹¦ÄÜ£¬¶ø IIS 6.0 ÔòÊÇ Windows Server 2003 ÖÐÌṩµÄȫеġ¢¿ª´´Ð﵀ Microsoft Web ÐÅÏ¢·þÎñ¡£ÓÈÆäÖµµÃÒ»ÌáµÄÊÇ£¬ÔÚ¶ÀÁ¢µÄ¸¨Öú½ø³ÌÖÐÔËÐÐµÄ ASP.NET Ó¦ÓóÌÐò£¬ÆäÐÐΪÓë IIS 6 ÖеÄËùÓÐÓ¦ÓóÌÐòÏàͬ¡£¶øÇÒ£¬¾¡¹Ü»á³öÏÖÔËÐÐʱÒì³£¡¢ÄÚ´æÐ¹Â¶»ò³ÌÐò´íÎó£¬ASP.NET ÔËÐÐʱÈÔÄÜ×Ô¶¯»ØÊÕ¸¨Öú½ø³ÌÒÔ±£Ö¤ÊµÏÖ׿ԽµÄÐÔÄÜ¡£ÕâÖÖ¹¦ÄÜÒѳÉΪ IIS 6.0 µÄϵͳ¹¦ÄÜ¡£

¡¡¡¡ÔÚ±¾ÎÄÖУ¬ÎÒ¸ÅÀ¨½éÉÜÁËĬÈ쵀 ASP.NET ½ø³ÌÄ£Ð͵Ļù´¡ÖªÊ¶£¬ÒÔ¼° IIS ¼¶´úÂ루ASP.NET ISAPI À©Õ¹£©ºÍ¸¨Öú½ø³ÌÖ®¼äµÄ½»»¥¡£Í¬Ê±£¬»¹½éÉÜÁËÓë IIS 6 ½ø³ÌÄ£ÐÍÖ®¼äµÄ×îÐÂÇø±ð¡£

×öÈËÒªºñµÀ£¬Çë×¢Ã÷ת×Ô¿áÍø¶¯Á¦(www.ASPCOOL.COM)¡£

ÔðÈα༭£ºadmin
±¾ÎÄÒýÓõØÖ·£º http://www.3pcode.com/net/2007/10/91163.htm
Ïà¹ØÎÄÕÂ