¡¾·±ÌåÖÐÎÄ¡¿
¡¾ÉèΪÊ×Ò³¡¿
¡¾¼ÓÈëÊղء¿
µ±Ç°Î»Öãº.Net¼¼ÊõÊ×Ò³ >> .NET Framework >> ´´½¨ASP.NET¼àÊÓ·þÎñÆ÷½ø³Ì

´´½¨ASP.NET¼àÊÓ·þÎñÆ÷½ø³Ì

2004-10-01 08:26:10  ×÷Õߣº  À´Ô´£º»¥ÁªÍø  ä¯ÀÀ´ÎÊý£º39  ÎÄ×Ö´óС£º¡¾´ó¡¿¡¾ÖС¿¡¾Ð¡¡¿
¼ò½é£º²úÆ·¼ò½é Äú¿´µ½¹ý³öÉ«µÄ¿§·ÈµêµêÔ±ËÍ¿§·ÈµÄÇé¾°Âð£¿ÄǼòÖ±¾ÍÊÇ¿§·È¶¹¡¢ÕôÆûºÍÅ£Ä̵÷ºÍ¿§·ÈÒûÁÏÔÚÌø¾«²ÊµÄ°ÅÀÙ£¬ÌøÔ¾×ű¼Ïò½¹¼±µÈºòµÄ¹Ë¿Í¡£È»¶ø£¬¼´±ãÊÇ×îºÃµÄµêԱż¶ûÒ²»á³öÏÖÎÊÌâ¡£±ÈÈçÁ½¸öµ¥×ÓÔÚ´¦Àíʱ¸ã»ìÁË...

²úÆ·¼ò½é

Äú¿´µ½¹ý³öÉ«µÄ¿§·ÈµêµêÔ±ËÍ¿§·ÈµÄÇé¾°Âð£¿ÄǼòÖ±¾ÍÊÇ¿§·È¶¹¡¢ÕôÆûºÍÅ£Ä̵÷ºÍ¿§·ÈÒûÁÏÔÚÌø¾«²ÊµÄ°ÅÀÙ£¬ÌøÔ¾×ű¼Ïò½¹¼±µÈºòµÄ¹Ë¿Í¡£È»¶ø£¬¼´±ãÊÇ×îºÃµÄµêԱż¶ûÒ²»á³öÏÖÎÊÌâ¡£±ÈÈçÁ½¸öµ¥×ÓÔÚ´¦Àíʱ¸ã»ìÁË£¬½á¹ûË͵½ÄúÃæÇ°µÄÊÇÒ»±­ Soy latte¡£Ò²¿ÉÄÜÊDZ­×ÓÉÏÁú·É·ïÎèµÄÁʲÝ×Ö¼£¸ù±¾¾ÍÊÇд´íÁË£¬»òÕßµêÔ±Àí½â´íÁË¡£ÓÐÈËÒªÁËÒ»±­¡°±å¸ßÆæÈô¡±£¨¿¨ÆÕÆäŵ£©£¬¿ÉÁ¯µÄµêÔ±½Ê¾¡ÄÔ֭ҲŪ²»¶®¹Ë¿Íµ½µ×Òªµãʲô¡£Èç¹û³öÏÖÁËÀàËÆµÄÎÊÌ⣬¾Í±ØÐëÍ£Ö¹´¦Àí£¬È»ºóÔÙÖØÐ¿ªÊ¼¡£ºÃµÄ·þÎñÔ±¿ÉÄÜ»áÍÆÑÓÒ»ÏÂÏÖÓеÄÒªÇ󣬶øÓÅÐãµÄ·þÎñԱȴÄܹ»ÔÚûÈ˲ì¾õµÄÇé¿öÏÂ×öµ½ÕâÒ»µã¡£

Microsoft® ASP.NET ÔÚϵͳ¿É¿¿ÐÔ·½ÃæÈ¡µÃÁËÓÅÓÚÆäÈκξºÕù¶ÔÊÖµÄ¾Þ´ó½ø²½¡£È»¶ø£¬¾ÍÏñÄÇλ³öÉ«µÄµêÔ±Ò»Ñù£¬ASP.NET ż¶ûÒ²»á³öÏÖÎÊÌâ¡£ÐÒÔ˵ÄÊÇ£¬ASP.NET ÊǷdz£ÓÅÐãµÄ·þÎñÆ÷¡£ËüÄÜÔÚºǫ́ѸËÙÉú³ÉеĽø³Ì£¬È»ºó´¦ÀíÇëÇó¡£Í¨³£Ö»»áÔÚÇëÇóÒ³ÃæÊ±·¢ÉúÒ»µãÓû§ÉõÖÁ¿ÉÄܶ¼²»»á×¢Òâµ½µÄÇá΢ÑÓ³Ù¡£

¶ø ASP.NET ϵͳµÄ¹ÜÀíÔ±¿ÉÄÜÐèÒªÖªµÀ·¢ÉúÁËʲô¡£Í¬Ñù£¬ËûÃÇÒ²ÏëÁ˽âÊÇʲôԭÒòµ¼ÖÂÁ˽ø³Ìʧ°Ü¡£ÐÒÔ˵ÄÊÇ£¬Ê¹Óà .NET Framework Àà¿âÎĵµÖÐµÄ ProcessInfo ºÍ ProcessModelInfo Àà±ã¿É»ñµÃÏà¹ØÐÅÏ¢¡£±¾ÎÄÖУ¬ÎÒÃǽ«Ñ§Ï°ÈçºÎ´´½¨ ASP.NET HTTP ´¦Àí³ÌÐò£¬ÒÔʹÓÃÕâЩ¶ÔÏó²é¿´ Web Õ¾µãʹÓõĽø³ÌµÄÔËÐÐ×´¿öºÍ¹Ø±Õ×´¿ö¡£ÁíÍ⣬ÎÒÃǽ«´´½¨Ò»¸öÅäÖýڴ¦Àí³ÌÐò£¬ÕâÑùÎÒÃDZãÄܹ»ÔÚ°²×°´¦Àí³ÌÐòºó¶ÔÆä½øÐÐÅäÖá£

ÎÒÃǽ«¿´µ½Ê²Ã´£¿

ASP.NET ½ø³Ì¸ºÔð±àÒëºÍ¹ÜÀíËùÓÐÏò ASP.NET Ò³ÃæÌá³öµÄÇëÇó¡£ÀíÏë×´¿öÏ£¬´Ë½ø³ÌÓ¦¸ÃʼÖÕ´æÔÚÓÚ·þÎñÆ÷ÖУº»îÔ¾µØ½ÓÊÕÇëÇó¡¢±àÒëÒ³Ãæ²¢·µ»Ø HTML¡£È»¶ø£¬ÓÉÓÚ´æÔÚÐí¶à¿ÉÄÜÓ°Ïì½ø³ÌµÄDZÔÚʼþ£¬ÎÒÃDz»µÃ²»Ãæ¶Ô Web ¿ª·¢µÄÕæÊµ×´¿ö¡£¿ª·¢ÈËÔ±¿ÉÄÜδÄÜÕýÈ·´¦ÀíÄÚ´æÐ¹Â©»òÏß³ÌÎÊÌ⣻·þÎñÆ÷¿ÉÄܻᶪʧÓë½ø³ÌµÄÁ¬½Ó£»»òÕßÉõÖÁ»áÒòΪÔÚ Web.config ÎļþµÄ Element ½ÚÖÐ¶Ô idleTimeout¡¢requestLimit¡¢memoryLimit ºÍÀàËÆµÄÏîÄ¿½øÐÐÁË´íÎóµÄÅäÖöøµ¼Ö³öÏÖÎÊÌâ¡£Èç¹û·¢ÉúÁËÒÔÉÏÈκÎÒ»ÖÖʼþ£¬Ôò½«´´½¨Ð嵀 ASP.NET ¸¨Öú½ø³Ì£¬ÐµÄÇëÇó½«Òƽ»ÖÁ´Ë½ø³Ì½øÐд¦Àí¡£

ÓÉÓÚ ASP.NET ½ø³Ì¶ÔÒ³Ãæ´¦ÀíÈç´ËÖØÒª£¬Òò´Ë¼àÊÓÕâЩ½ø³ÌͬÑùÖØÒª¡£Ê¹Óà ProcessInfo ºÍ ProcessModelInfo Àà¿ÉÒԲ鿴µ±Ç°ºÍÒÔǰ½ø³ÌµÄÓÐЧÆÚºÍÔËÐÐ×´¿ö¡£Í¼ 1 ËùʾΪÔÚ±¾ÎÄÖд´½¨µÄ½ø³ÌÁÐ±í¡£

ͼ 1£ºWeb ·þÎñÆ÷µÄ½ø³ÌÀúÊ·¼Ç¼

ProcessInfo class ´æ´¢Á˸ø¶¨½ø³ÌµÄÊý¾Ý¡£²»µÃ×ÔÐд´½¨ ProcessInfo À࣬µ«¿ÉÒÔʹÓà ProcessModelInfo class À´¼ìË÷ ProcessInfo ¶ÔÏó¡£±í 1 ËùʾΪ ProcessInfo ÀàµÄÖØÒªÊôÐÔ¡£

±í 1£ºProcessInfo ÀàµÄÊôÐÔ

ÊôÐÔ Êý¾ÝÀàÐÍ ËµÃ÷

Age TimeSpan ½ø³ÌÔËÐУ¨»òÔø¾­ÔËÐУ©µÄ×Üʱ¼ä¡£Èç¹ûÕâ¸öÖµ³¬³öÁËÔÚ Web.Config ÎļþµÄ processModel ½ÚÖеij¬Ê±ÉèÖ㬿ɵ¼ÖÂÖØÐÂÆô¶¯½ø³Ì¡£

PeakMemoryUsed Integer ´Ë½ø³ÌËùÓÃÄÚ´æµÄ×î´óÖµ£¨ÒÔ MB Ϊµ¥Î»£©¡£Èç¹ûÕâ¸öÖµ³¬³öÁËÔÚ Web.Config ÎļþµÄ processModel ½ÚÉèÖÃµÄ memoryLimit ¼¶±ðÉèÖ㬿ɵ¼Ö½ø³ÌÖØÐÂÆô¶¯¡£

ProcessID Integer ²Ù×÷ϵͳʹÓÃ´Ë ID À´±êʶ½ø³Ì¡£Ã¿¸ö½ø³Ì¾ùÓÐΨһµÄ ID£¨ÔÚ½ø³ÌÔËÐÐʱ£©¡£

RequestCount Integer ½ø³Ì½ÓÊÕµ½µÄÒ³ÃæÇëÇóµÄÊýÁ¿¡£Èç¹ûÕâ¸öÖµ³¬³öÁËÔÚ Web.Config ÎļþµÄ processModel ÖÐ requestLimit µÄ¼¶±ðÉèÖ㬿ɵ¼Ö½ø³ÌÖØÐÂÆô¶¯¡£

ShutdownReason ProcessShutdownReason ´Ëö¾Ù¶¨Òå½ø³ÌÖØÐÂÆô¶¯µÄ¿ÉÄÜÔ­Òò¡£ÓйؿÉÄܵÄÖµ£¬Çë²ÎÔıí 2¡£

StartTime DateTime ½ø³ÌÆô¶¯µÄʱ¼ä¡£

Status ProcessStatus ´Ëö¾Ù¶¨Òå ASP.NET ¸¨Öú½ø³ÌµÄµ±Ç°×´Ì¬¡£´ËÖµ¿ÉÄÜΪ Alive£¨»î¶¯£©¡¢ShuttingDown£¨½ø³ÌÒѽÓÊÕµ½¹Ø±ÕÇëÇ󣩡¢ShutDown£¨½ø³ÌÒÑÕý³£¹Ø±Õ£©»ò Terminated£¨½ø³ÌÒѱ»ÆÈ¹Ø±Õ£©¡£

ij½ø³Ì¹Ø±Õºó£¬¹Ø±ÕÔ­Òò½«±»ÉèÖÃΪ ProcessShutdownReason Enumeration ÖеÄijһ¸öÖµ¡£

±í 2£º½ø³Ì¹Ø±ÕµÄ¿ÉÄÜÔ­Òò

Öµ ˵Ã÷

None ´ËÖµ±íÃ÷½ø³ÌÈÔÔÚÔËÐС£

Timeout ½ø³ÌÒòÆäÉú´æÆÚ³¬³öÁËÔÚ Web.Config ÎļþµÄ processModel ½ÚÖÐÉèÖõij¬Ê±Öµ¶øÖØÆô¡£Èç¹ûÕâÖÖÇé¿öƵ·±·¢Éú£¬Ò²ÐíÓ¦¿¼ÂÇÔö¼Ó³¬Ê±Öµ¡£²»¹ý£¬Ò»°ãÀ´ËµÒòÕâÖÖÔ­Òò¶øÖØÐÂÆô¶¯¿ÉÒÔ½ÓÊÜ¡£

IdleTimeout ½ø³ÌÖØÐÂÆô¶¯µÄÔ­ÒòÊÇȱÉÙ¿Í»§¶Ë¡£Èç¹ûÔÚ Web.Config ÎļþµÄ processModel ½ÚÖÐµÄ idleTimeout ÖµËùÉèÖõÄʱ¼äÆÚÏÞÄÚûÓпͻ§¶ËÇëÇ󣬽«·¢Éú´ËÀàÖØÐÂÆô¶¯¡£Õâͨ³£Ò²ÊÇ¿ÉÒÔ½ÓÊܵÄÖØÐÂÆô¶¯µÄÔ­Òò¡£

RequestsLimit ½ø³ÌÖØÐÂÆô¶¯µÄÔ­ÒòÊǽÓÊÕµ½µÄÇëÇóÊýÁ¿³¬¹ýÁËÔÚ Web.Config ÎļþµÄ processModel ½ÚÖÐÉèÖõÄÖµ (requestLimit)¡£Ò»°ãÀ´Ëµ£¬ÕâÖÖÖØÐÂÆô¶¯µÄÔ­ÒòÒ²¿ÉÒÔ½ÓÊÜ£¬Ö÷ÒªÓÃÓÚÄúÏ£Íû½ø³Ìż¶ûÖØÐÂÆô¶¯µÄÇé¿ö¡£

MemoryLimitExceeded ½ø³ÌÖØÐÂÆô¶¯µÄÔ­ÒòÊÇÒòΪ³¬³öÁËͨ¹ý Web.Config ÎļþÖÐµÄ memoryLimit ÖµÉèÖõÄÄÚ´æÏÞÖÆ¡£Õâͨ³£±íʾ½ø³ÌµÄij¸ö ASP.NET Ó¦ÓóÌÐò²¿·Ö·¢ÉúÁËÎÊÌ⣨¿ÉÄÜÊÇÄÚ´æÐ¹Â©£©¡£Èç¹û´ËÀàÏÖÏ󯵷±·¢Éú£¬Çë¼àÊÓÿ¸ö Web Ó¦ÓóÌÐòµÄÄÚ´æÊ¹ÓÃÊÇ·ñÕý³£¡£

RequestQueueLimit ½ø³ÌÖØÐÂÆô¶¯µÄÔ­ÒòÊÇÔڵȺòÏìÓ¦µÄÇëÇó×ÜÊý³¬³öÁË Web.Config ÎļþµÄ requestQueueLimit Öµ¡£Í¨³£ÕâÊÇijЩÇé¿ö½«µ¼Ö Web ·þÎñÆ÷ÑÓ³ÙµÄÐźš£¿ÉÄÜÐèÒªÔö¼ÓÄÚ´æ»ò·þÎñÆ÷£¬»òÌá¸ßÇý¶¯Æ÷»ò´¦ÀíÆ÷µÄËÙ¶È¡£

DeadlockSuspected ½ø³ÌÖØÐÂÆô¶¯µÄÔ­ÒòÊÇ¿ÉÄÜÍ£Ö¹ÁËÕýÔÚ´¦ÀíµÄÇëÇó¡£ÕýÈçÕâ¸ö¹Ø±ÕÔ­ÒòµÄÃû³ÆÄÇÑù£¬×î¿ÉÄܵ¼ÖÂÕâÖÖÇé¿öµÄÔ­ÒòΪ£ºÈç¹ûÁ½¸ö»ò¶à¸öÏß³ÌÐèÒªÁíÒ»¸öÏß³ÌÍê³Éºó²ÅÄܼÌÐø½øÐУ¨ÀýÈç A Ïß³ÌÐèÒª B Ïß³ÌÍê³ÉÏòijÎļþµÄдÈëºó²ÅÄܼÌÐø½øÐУ¬¶øÍ¬Ê± B Ïß³ÌÐèÒª A Ïß³ÌÍê³É¼ÆËãºó²ÅÄܼÌÐø½øÐУ©£¬ÎÒÃǽ«ÕâÖÖÇé¿ö³ÆÎªÏ̴߳¦ÓÚ¡°Deadlock¡±£¨ËÀËø£©×´Ì¬¡£Èç¹ûÓÐÕâÖÖ¿ÉÄÜ£¬½ø³Ì½«Òò´Ë¶ø¹Ø±Õ¡£Ò»°ãÀ´Ëµ£¬Äú¿Ï¶¨²»Ï£Íû¿´µ½ÕâÖֹرÕÔ­Òò£¬Èç¹ûÄú²»ÐÒ¿´µ½ÁË£¬Çë²é¿´ÔÚÓ¦ÓóÌÐòÖÐʹÓõÄËùÓÐÏ̴߳¦Àí»ò×ÊԴʹÓÃÇé¿ö¡£

PingFailed µ± ASP.NET ¸¨Öú½ø³Ì¹ÜÀíÒ³ÃæÊ±£¬ÓÐʱ»áÊÕµ½´Ó IIS ½ø³Ì·¢À´µÄ ping ÒÔÈ·¶¨ÊÇ·ñÈÔÐèÒª´Ë½ø³Ì¡£Èç¹û ping ʧ°Ü£¬Ôò IIS ½ø³Ì¿ÉÄÜ»á¹Ø±Õ¸Ã ASP.NET ½ø³Ì¡£Õâ¸ö¹Ø±ÕÔ­Òò˵Ã÷ÁË¿ÉÄÜÔÚ·þÎñÆ÷½ÓÊÕÏûÏ¢µÄ¹ý³ÌÖÐȷʵ´æÔÚͨÐÅÎÊÌâ»ò ASP.NET ¸¨Öú½ø³ÌÒòijÖÖÔ­Òò¶øÍ£Ö¹¹¤×÷¡£

Unexpected Ò»°ãÀ´Ëµ£¬Äú¿Ï¶¨²»Ïë¿´µ½´ËÏûÏ¢£¬ÒòΪËü±íÃ÷ÊÇ¡°Ä³ÖÖÆäËûÔ­Òò¡±ÖÕÖ¹ÁË ASP.NET ¸¨Öú½ø³Ì¡£³ýÁ˼àÊÓÿ¸ö½ø³Ì»ò¶ÔËùÓÐÔËÐÐÖеĴúÂëÖ´ÐдúÂëУ¶Ô£¬¼¸ºõûÓÐÈκΰ취½â¾ö´ËÎÊÌâ¡£

´´½¨½ø³Ì²é¿´´¦Àí³ÌÐò

ÔÚ ASP.NET ÖУ¬Ö÷ҪʹÓÃÁ½ÖÖ·½·¨À´´´½¨ HTTP ´¦Àí³ÌÐò¡£µÚÒ»ÖÖÊÇͨ¹ý´´½¨´øÓÐ ASHX À©Õ¹ÃûµÄÎļþ£¬ÁíÒ»ÖÖÊÇ´´½¨ÊµÏÖ System.Web.IHttpHandler µÄÀ࣬Çë²ÎÔÄ IHttpHandler Interface¡£±¾ÎĽ«×ÅÖØ½éÉܵڶþÖÖÐÎʽ¡£Òª´´½¨ HTTP ´¦Àí³ÌÐò£¬ÐèÒª´´½¨Ò»¸ö³ÌÐò¼¯£¨Í¨³£ÊÇÒ»¸ö´úÂë¿âÏîÄ¿£©ºÍÒ»¸öʵÏÖ System.Web.IHttpHandler µÄÀࡣȻºó½«¸ÃÀà×¢²áµ½ Web.Config£¨»ò machine.config£©ÎļþÖУ¬È»ºóËü¾Í¿ÉÒÔ½ÓÊÕÇëÇóÁË¡£Èç¹û²é¿´ machine.config Îļþ£¨ÔÚÏàÓ¦ÃüÃûµÄ httpHandlers ½ÚÖУ©£¬½«¿´µ½Ðí¶àµ±Ç°ÒÑ×¢²áµÄ HTTP ´¦Àí³ÌÐò£¬°üÀ¨ System.Web.UI.PageHandlerFactory£¨ASP.NET Ò³ÃæµÄÖ÷´¦Àí³ÌÐò£©¡£ÔÚ±àд HTTP ´¦Àí³ÌÐòʱ£¬Æäʵ¾ÍÊÇÔÚ¶¨Òå´¦ÀíÇëÇóµÄз½·¨¡£

ËùÓÐ HTTP ´¦Àí³ÌÐò¾ùͨ¹ýʵÏÖ System.Web.IHttpHandler Interface À´´´½¨¡£´Ë½Ó¿ÚÐèÒª´´½¨Ò»¸öÊôÐÔºÍÒ»¸ö·½·¨£¬Èç±í 3 Ëùʾ¡£

±í 3£ºIHttpHandler ½Ó¿ÚµÄ³ÉÔ±

³ÉÔ± ÀàÐÍ ËµÃ÷

IsReusable ÊôÐÔ (Boolean) È·¶¨¸Ã´¦Àí³ÌÐòµÄʵÀýÊÇ·ñ¿ÉÒÔÖØ¸´Ê¹Óá£Í¨³££¬¸ÃÊôÐÔÓ¦·µ»Ø true£¬³ý·Ç´¦Àí³ÌÐòÐèÒª¶Ôij¸ö×ÊÔ´µÄ¶ÀÕ¼·ÃÎÊ¡£

ProcessRequest ·½·¨ HTTP ´¦Àí³ÌÐòµÄ¡°Ö÷¡±·½·¨¡£½«ÔÚ´ËÌí¼Ó¶ÔÇëÇóµÄËùÓд¦Àí¡£¸ÃÀà´«µÝµ±Ç° ASP.NET ÉÏÏÂÎÄ¡£¿ÉÒÔ´Ó´ËÉÏÏÂÎÄÖмìË÷ÇëÇó¶ÔÏóºÍÏìÓ¦¶ÔÏó¡£

ʵÏÖ IHttpHandler

´´½¨ HTTP ´¦Àí³ÌÐòµÄ´óÁ¿¹¤×÷¼¯ÖÐÔÚʵÏÖ´¦Àí³ÌÐòµÄ ProcessRequest¡£Í¨³££¬ÐèÒª´æ´¢µ±Ç°ÉÏÏÂÎĵÄÇëÇóºÍÏìÓ¦¶ÔÏó£¬È»ºóʹÓÃÏìÓ¦¶ÔÏóµÄ±àд·½·¨´´½¨Êä³ö¡£ÒÔϸø³öÁËÓÃÓÚ½ø³Ì²é¿´´¦Àí³ÌÐòµÄ ProcessRequest ×ÊÔ´µÄ Microsoft Visual Basic® .NET Ô´¡£

Public Sub ProcessRequest(ByVal context As HttpContext) _

Implements IHttpHandler.ProcessRequest

_context = context

_writer = New HtmlTextWriter(context.Response.Output)

'we only want to do this if we're enabled

If _config.Enabled Then

_writer.WriteLine("")

_writer.WriteLine("")

_writer.WriteLine(Me.StyleSheet)

_writer.WriteLine("")

_writer.WriteLine("")

_writer.WriteLine("")

'write content here

'create table

Dim t As New Table()

With t

.Width = Unit.Percentage(100)

.CellPadding = 0

.CellSpacing = 0

End With

'the meat of the routine

'make certain this is a destination machine

If (PermittedHost(_context.Request.UserHostAddress)) Then

CreateHeader(t)

AddProcesses(t)

CreateFooter(t)

Else

CreateErrorReport(t)

End If

'write to the stream

t.RenderControl(_writer)

_writer.WriteLine("\r\n\r\n")

End If

End Sub

ProcessRequest µÄʵÏÖ»á´æ´¢µ±Ç°ÉÏÏÂÎĺͱàдÕß¡£È»ºó£¬Ëüͨ¹ý³ÊÏÖÒ³ÃæµÄÆðʼ HTML ±êÇ©½«Ð嵀 HTML Ò³Ãæ´´½¨ÎªÊä³ö¡£ÏÂÒ»²½£¬Ëü½«´´½¨Ò»¸öÓÃÓÚ¸ñʽ»¯Êä³öµÄ±í¸ñ¡£×îºó£¬Èç¹ûÆôÓÃÁË´¦Àí³ÌÐò£¬²¢ÇÒ·¢³öÇëÇóµÄ¿Í»§¶ËÊǺϷ¨µÄ IP µØÖ·Ö®Ò»£¬Ôòͨ¹ýÒÔÏÂÈýÖÖ·½·¨´´½¨Êä³ö£º CreateHeader¡¢AddProcesses ºÍ CreateFooter¡£ÕâЩ·½·¨½«ÏàÓ¦µÄÖµ³ÊÏÖÔÚ±í¸ñµÄµ¥Ôª¸ñÖС£ÕâЩ´úÂëÓкܴóÒ»²¿·ÖÊÇÖØ¸´µÄ£¬ÎªÁ˼ò¶ÌÆð¼û£¬ÒÔϽö¸ø³öÁË AddProcesses ¼°ÆäÏà¹ØµÄ·½·¨¡£

Private Sub AddProcesses(ByVal table As _

System.Web.UI.WebControls.Table)

Dim procs As ProcessInfo() = _

ProcessModelInfo.GetHistory(_config.RequestLimit)

Dim row As TableRow

_list = New ProcessInfoCollection

For Each proc As ProcessInfo In procs

row = AddRow(table)

_list.Add(proc)

AddCell(row, proc.ProcessID.ToString())

AddCell(row, proc.Status.ToString())

AddCell(row, proc.StartTime.ToString("g"))

AddCell(row, FormatAge(proc.Age))

AddCell(row, proc.PeakMemoryUsed.ToString("N0") + " MB")

AddCell(row, proc.RequestCount.ToString("N0"))

AddCell(row, proc.ShutdownReason.ToString())

Next

End Sub

Private Function AddCell( _

ByVal row As System.Web.UI.WebControls.TableRow, _

ByVal text As String) As System.Web.UI.WebControls.TableCell

Dim c As New TableCell()

c.Text = text

row.Cells.Add©

Return c

End Function

ϸÐĵģ¨ºÍÓм¼Êõ±³¾°µÄ£©¶ÁÕß¿ÉÄÜÒѾ­×¢Òâµ½£¬ÎÒÍêÈ«¿ÉÒÔͨ¹ý³ÊÏÖ DataGrid ²¢½« ProcessInfoCollection °ó¶¨µ½ DataGrid À´¼ò»¯´Ë´úÂ룬µ«ÄÇÑù¾ÍʧȥÁ˱àд³ÌÐòµÄÀÖȤ¡£

°²×° HTTP ´¦Àí³ÌÐò

´´½¨Íê HTTP ´¦Àí³ÌÐòºó£¬±ØÐë½øÐа²×°²ÅÄÜʹÓá£Õâ°üÀ¨Ê¹Àà¿ÉÓ㬲¢ÔÚÅäÖÃÎļþÖÐÌí¼ÓÏàÓ¦µÄÐÅÏ¢ÒÔ¼¤»î´¦Àí³ÌÐò¡£

Èç¹û´´½¨µÄÊǽö±»µ¥¸ö vroot ʹÓõļòµ¥´¦Àí³ÌÐò£¬Ôò¿ÉÒÔ½« DLL ¸´ÖÆÖÁ¸Ã vroot µÄ bin Ŀ¼¼´¿ÉʹÓøÃÀà¡£Èç¹û´´½¨ÁËÒ»¸öÓɶà¸ö vroot ʹÓÃµÄ HTTP ´¦Àí³ÌÐò£¨ÀàËÆÓÚ ProcessHandler£©£¬Ôò´Ë´¦Àí³ÌÐò±ØÐë°²×°µ½È«¾Ö³ÌÐò¼¯»º´æ (GAC) ÖС£Òª½«´Ë´¦Àí³ÌÐò°²×°µ½ GAC ÖУ¬Àà±ØÐë¾ßÓÐÑϸñÃû³Æ¡£Òª¾ßÓÐÑϸñÃû³Æ£¬Ëü±ØÐëÓйØÁªµÄÑϸñÃû³Æ¼ü¡£±ØÐëʹÓÃÃüÁîÐпÉÖ´ÐÐÎļþ sn.exe ´´½¨ÑϸñÃû³Æ¼üÎļþ¡£Óйش˳ÌÐòµÄÏêϸÐÅÏ¢£¬Çë²ÎÔÄ NET Framework Tools ÎĵµµÄ Strong Name Tool (Sn.exe) Ò»½Ú¡£

´¦Àí³ÌÐò¿ÉÓúó£¬ÏÂÒ»²½¾ÍÊÇÌí¼ÓÅäÖÃÒÔʹÆä¿ÉÒÔ´¦ÀíÇëÇ󣬷½·¨ÊÇÔÚ Web.Config »ò machine.config ÎļþµÄ httpHandlers ½ÚÖÐÌí¼ÓÌõÄ¿¡£´ËÌõĿָ¶¨Á˽«Í¨¹ý´¦Àí³ÌÐò·ÓɵÄÎļþÀ©Õ¹ÃûºÍ²Ù×÷¡£½ø³Ì²é¿´´¦Àí³ÌÐòµÄÌõÄ¿ÈçÏÂËùʾ¡£

type="Microsoft.Samples.Msdn.Web.ProcessHandler,

MsdnProcessHandler, Version=1.0.0.0, Culture=neutral,

PublicKeyToken=f5f94c20bb90ce64" />

´ËÌõÄ¿Òâζ×ÅÔÚij¸öÇëÇóʹÓÃÈκΠHTTP ÃüÁîѰÕÒ¡°Îļþ¡± process.axd£¨Êµ¼ÊÉϲ»´æÔÚ£©Ê±£¬Ëü½«ÏòλÓÚ³ÌÐò¼¯ MsdnProcessHandler ÖÐµÄ Microsoft.Samples.Msdn.Web.ProcessHandler Àà·¢ËÍÇëÇ󡣸ÃÀཫʵÏÖ IHttpHandler£¬È»ºóÓÉ IHttpHandler ¸ºÔðÉú³ÉÊä³ö¡£

Ìí¼ÓÅäÖÃ

Ðí¶à ASP.NET Ó¦ÓóÌÐòʹÓà appSetting ±êÇ©Ìí¼Ó×Ô¶¨ÒåÅäÖá£Õâ¶ÔÓÚ´ó¶àÊýÓ¦ÓóÌÐòÀ´ËµÒѾ­ÍêÈ«×ã¹»ÁË¡£È»¶ø£¬ÓÐʱӦÓóÌÐò¿ÉÒÔʹÓøüÓÐÕë¶ÔÐԵĽâ¾ö·½°¸¡£ÕâÖÖÇé¿öÏ£¬Äú¿ÉÒÔΪӦÓóÌÐòн¨½Ú¡£

н¨ÅäÖýڰüÀ¨Á½¸ö²½Öè¡£Ê×ÏÈ£¬±ØÐë´´½¨ÅäÖöÔÏ󡣴˶ÔÏó»ò½á¹¹¾ßÓбíʾËùÐèÅäÖÃÊý¾ÝµÄÊôÐÔ¡£´Ë¶ÔÏó¿ÉÒÔ¾ßÓС¢µ«Í¨³£²»¾ßÓÐÈκη½·¨¡£Æä´ÎÒª´´½¨Ò»¸ö½Ú´¦Àí³ÌÐò¡£´Ë½Ú´¦Àí³ÌÐò¸ºÔð´Ó web.congfig ÎļþÖжÁÈ¡ÏàÓ¦µÄÐÅÏ¢£¬²¢ÇÒ½«Æäת»¯ÎªÅäÖöÔÏó¡£

ProcessViewer µÄÅäÖöÔÏó¾ßÓÐËĸöÊôÐÔ£¬ÈçϱíËùÊö¡£

±í 4£ºProcessViewer ÅäÖöÔÏóµÄÊôÐÔ

ÊôÐÔ Êý¾ÝÀàÐÍ ËµÃ÷

Enabled Boolean Èç¹û ProcessViewer ¿ÉÓã¬ÔòΪ true¡£ÕâÑù±ã¿ÉÒÔÔÝʱ¹Ø±Õ´¦Àí³ÌÐò¶øÎÞÐ轫Æä´Ó web.config ÎļþÖÐɾ³ý¡£

LocalOnly Boolean Èç¹ûÖ»ÄÜ´Ó±¾µØ¼ÆËã»ú²é¿´ ProcessViewer µÄÊä³ö£¬ÔòΪ true¡£ÕâÊÇ×îΪ°²È«µÄ·½°¸£¬·ÀÖ¹ÆäËûÈ˲鿴 Web Ó¦ÓóÌÐòµÄ½ø³ÌÀúÊ·¼Ç¼¡£

RequestLimit Integer ¸ÃÊôÐÔÏÞ¶¨ÁËÏÔʾÏîÄ¿ÊýµÄ×î´óÖµ¡£ProcessModelInfo.GetHistory ×î¶à·µ»Ø 100 ¸öÏîÄ¿¡£´ËÊôÐÔÓÃÓÚÔÚÐèҪʱ¼õÉÙ´ËÊýÁ¿¡£

PermittedHosts String array Èç¹û LocalOnly Ϊ false£¬ÔòÈκμÆËã»ú¾ù¿ÉÒÔ·ÃÎÊ Process.axd handler À´²é¿´Ó¦ÓóÌÐòµÄ½ø³ÌÀúÊ·¼Ç¼¡£Õâ¾Í¿ÉÄÜ»áÓа²È«·çÏÕ¡£Òò´Ë£¬¿ÉÒÔ·ÖÅäÔÊÐí·ÃÎÊ´¦Àí³ÌÐòµÄ IP µØÖ·µÄÁÐ±í¡£´ËÊôÐÔ¿ÉÓÃÓÚÏÞÖÆ¶Ô¹ÜÀíÔ±¹¤×÷Õ¾µÄ·ÃÎÊ¡£

´´½¨×Ô¶¨ÒåÅäÖõĵڶþ²½ÊÇ´´½¨½âÊÍÅäÖÃÎļþµÄ XML µÄÀ࣬²¢Ê¹ÓøÃÐÅÏ¢Ìî³äÅäÖöÔÏó¡£´ËÀà±ØÐëʵÏÖ System.Configuration.IConfigurationSectionHandler ½Ó¿Ú¡£´Ë½Ó¿ÚÖ»ÓÐÒ»¸ö·½·¨£¬³ÆÎª Create¡£ÒÔϸø³öÁË ProcessViewerSectionHandler µÄ Visual Basic .NET Ô´£¨Çë²ÎÔÄ C# Ô´µÄÏÂÔØ£©¡£

Public Function Create(ByVal parent As Object, _

ByVal configContext As Object, _

ByVal section As System.Xml.XmlNode) As Object _

Implements Configuration.IConfigurationSectionHandler.Create

' ½Ú¾ßÓÐÒÔϸñʽ£º

'

' localOnly="true|false"

' requestLimit="<=100"

' enabled="true|false"

' permittedHosts="comma-delimited list of IP addresses" />

Dim result New ProcessViewerConfiguration()

Dim config As New ConfigurationHelper(section)

Dim max As Integer

Dim hosts As String

Const delimiter As String = ", "

Const MaximumReturnCount As Integer = 100

'È·ÈÏÉèÖ㬲¢É趨

result.Enabled = config.GetBooleanAttribute("enabled")

result.LocalOnly = config.GetBooleanAttribute("localOnly")

max = config.GetIntegerAttribute("requestLimit")

If max <= MaximumReturnCount Then

result.requestLimit = max

End If

hosts = config.GetStringAttribute("permittedHosts")

result.PermittedHosts = hosts.Split(delimiter.ToCharArray())

Return result

End Function

Create ·½·¨´«µÝÁËÈý¸ö¶ÔÏó£º

parent - ±íʾ¸¸ÅäÖýڣ¨Èç¹û¿ÉÓã©¡£

configContext - ±íʾ HttpConfigurationContext ¶ÔÏ󣬼´ Web ÅäÖõÄÊ£Óಿ·Ö¡£¿ÉÒÔʹÓô˶ÔÏó´Óµ±Ç° web.config ÎļþÖмìË÷Öµ¡£

section - ×îÎªÖØÒªµÄ²ÎÊý£¬Êµ¼ÊµÄÅäÖýڡ£Ê¹Óô˶ÔÏóÌî³äÅäÖöÔÏó¡£

ÒÔÉÏ´úÂëʹÓÃÁË ConfigurationHelper ¶ÔÏ󡣴˶ÔÏóÊÇÒ»¸öÓÃÓÚ´Ó½ÚÖмìË÷ÌØ¶¨Êý¾ÝÀàÐ͵ļòµ¥¶ÔÏó¡£´ËÀàµÄ´úÂëÈçÏÂËùʾ¡£

Friend Class ConfigurationHelper

Dim _section As XmlNode

Public Sub New(ByVal configSection As XmlNode)

_section = configSection

End Sub

'½ÓÊÜ true/false¡¢yes/no

Public Function GetBooleanAttribute(ByVal name As String) As Boolean

Dim value As String

Dim result As Boolean

value = GetStringAttribute(name).ToLower()

If ((Boolean.TrueString.ToLower() = value) _

OrElse (value = "yes")) Then

result = True

Else

result = False

End If

Return result

End Function

Public Function GetIntegerAttribute(ByVal name As String) As Integer

Dim value As String

Dim result As Integer

value = GetStringAttribute(name)

result = Int32.Parse(value)

Return result

End Function

Public Function GetStringAttribute(ByVal name As String) As String

Dim theAttribute As XmlAttribute

Dim result As String

theAttribute = _section.Attributes(name)

If Not theAttribute Is Nothing Then

result = theAttribute.Value

End If

Return result

End Function

End Class

ҪʹÓÃÕâ¸ö½Ú´¦Àí³ÌÐòºÍÅäÖöÔÏ󣬱ØÐ뽫Æä×¢²áÔÚÏàÓ¦µÄ ASP.NET ÅäÖÃÎļþÖС£ÒòΪ¿ÉÒÔÔÚÈκνø³ÌÖе÷ÓøÃÀ࣬ËùÒÔ×îºÃ½«ÆäÌí¼Óµ½ machine.config ÎļþÖС£ÔÚ machine.config ÀàµÄ configSection ½ÚÖеÄÏàӦλÖÃ×¢²á½Ú´¦Àí³ÌÐò£¨ÎÒ½«ÆäÌí¼Óµ½ÁË system.web ½ÚÖУ©

... other sections

type="Microsoft.Samples.Msdn.Web.ProcessViewerSectionHandler,

MsdnProcessHandler, Version=1.0.0.0,

Culture=neutral,

PublicKeyToken=f5f94c20bb90ce64" />

×¢²áÍê±Ïºó£¬±ã¿ÉÒÔÏò machine.config ÎļþÖÐÌí¼Ó½Ú£¬²¢ÇÒ¸ÃÀཫ³ÉΪ¿ÉÅäÖÃÀà¡£

С½á

´´½¨ HTTP ´¦Àí³ÌÐò¿ÉÒÔÌṩ³¬³ö ASP.NET. ¹¦ÄܵÄÇ¿ÓÐÁ¦»úÖÆ£¬Ê¹µÃ¿ª·¢Õ߱ܿªÒ³ÃæÄ£ÐÍ£¬²¢´´½¨¡¢Ð޸ĻòÀ©Õ¹ Web Õ¾µãµÄÄÚÈÝ¡£Í¨¹ýÌí¼ÓÓÃÓڲ鿴 ASP.NET µÄ½ø³ÌÀúÊ·¼Ç¼µÄ HTTP ´¦Àí³ÌÐò£¬¿ÉÒÔÕï¶Ï´úÂë»ò·þÎñÆ÷Öе¼Ö¿ͻ§Í¶ËßµÄÎÊÌ⣬ÀýÈç´úÂëÖдæÔÚÄÚ´æÐ¹Â©»òδ´¦ÀíµÄÒì³££¬»ò·þÎñÆ÷µÄÄÚ´æ²»×ã¡£

´´½¨²¢°²×° HTTP ´¦Àí³ÌÐòºó£¬Äú½«¿ÉÒÔ¸üÃôÈñµØ·¢ÏÖÔÚ´ËÖØÒª½ø³ÌÖз¢ÉúµÄ×´¿ö¡£µ½Ê±ºòÄú¾Í»áÓÐʱ¼äÀ´ºÈ±­¿§·È£¬¶ø²»ÊÇæÓÚ×·²é Web Õ¾µã½ø³ÌÖØÐÂÆô¶¯µÄÔ­ÒòÁË¡£

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