Http´¦Àí³ÌÐò
¡¡¡¡HTTP´¦Àí³ÌÐòÊÇʵÏÖÁËSystem.Web.IHttpHandler½Ó¿ÚµÄ.NET×é¼þ¡£ÈκÎʵÏÖÁËIHttpHandler½Ó¿ÚµÄÀà¶¼¿ÉÒÔÓÃÓÚ´¦ÀíÊäÈëµÄHTTPÇëÇó¡£HTTP´¦Àí³ÌÐòÓëISAPIÀ©Õ¹ÓÐЩÀàËÆ¡£HTTP´¦Àí³ÌÐòºÍISAPIÀ©Õ¹µÄ²î±ðÔÚÓÚÔÚURLÖпÉÒÔʹÓÃHTTP´¦Àí³ÌÐòµÄÎļþÃû³ÆÖ±½Óµ÷ÓÃËüÃÇ£¬ÓëISAPIÀ©Õ¹ÀàËÆ¡£
¡¡¡¡HTTP´¦Àí³ÌÐòʵÏÖÁËÏÂÁз½·¨£º
·½·¨Ãû³Æ ÃèÊö
ProcessRequest Õâ¸ö·½·¨Êµ¼ÊÉÏÊÇhttp´¦Àí³ÌÐòµÄºËÐÄ¡£ÎÒÃǵ÷ÓÃÕâ¸ö·½·¨À´´¦ÀíhttpÇëÇó¡£
IsReusable ÎÒÃǵ÷ÓÃÕâ¸öÊôÐÔÀ´¾ö¶¨http´¦Àí³ÌÐòµÄʵÀýÊÇ·ñ¿ÉÒÔÓÃÓÚ´¦ÀíÏàͬÆäËüÀàÐ͵ÄÇëÇó¡£HTTP´¦Àí³ÌÐò¿ÉÒÔ·µ»Øtrue»òfalseÀ´±íÃ÷ËüÃÇÊÇ·ñ¿ÉÒÔÖØ¸´Ê¹Óá£
¡¡¡¡Äã¿ÉÒÔʹÓÃweb.config»òÕßmachine.configÎļþ°ÑÕâЩÀàÓ³Éäµ½httpÇëÇóÉÏ¡£Ó³ÉäÍê³ÉÒԺ󣬵±½ÓÊÕµ½ÏàÓ¦ÇëÇóµÄʱºòASP.NET»áʵÀý»¯http´¦Àí³ÌÐò¡£ÎÒÃǽ«½âÊÍÈçºÎÔÚweb.configºÍ/»òmachine.configÎļþÖж¨ÒåËùÓÐÕâЩϸ½ÚÐÅÏ¢¡£
¡¡¡¡ASP.NET»¹Í¨¹ýIHttpHandlerFactory½Ó¿ÚÖ§³Öhttp´¦Àí³ÌÐòµÄÀ©Õ¹¡£ASP.NETÌṩÁ˰ÑhttpÇëÇó·Óɵ½ÊµÏÖIHttpHandlerFactory½Ó¿ÚµÄÀàµÄ¶ÔÏóÉϵÄÄÜÁ¦¡£´ËÍ⣬ASP.NET»¹ÀûÓÃÁËFactoryÉè¼ÆÄ£Ê½¡£ÕâÖÖģʽΪ½¨Á¢Ò»×éÏà¹Ø¶ÔÏó¶ø²»Ìṩ¾ßÌåÀàµÄ¹¦ÄÜÌṩÁ˽ӿڡ£¼òµ¥µÄ˵£¬Äã¿ÉÒÔ°ÑÓÃÓÚ½¨Á¢ÒÀÀµ´«µÝ½øÀ´µÄ²ÎÊý½¨Á¢µÄhttp´¦Àí³ÌÐò¶ÔÏóµÄÀà¿´×÷ÊÇfactory£¨¹¤³§£©¡£ÎÒÃDz»ÓÃÖ¸¶¨ÐèҪʵÀý»¯µÄÌØ¶¨µÄhttp´¦Àí³ÌÐò£»http´¦Àí³ÌÐò¹¤³§´¦ÀíÕâÖÖÊÂÎñ¡£ÕâÑù×öµÄÓŵãÔÚÓÚÈç¹ûδÀ´ÊµÏÖIHttpHandler½Ó¿ÚµÄ¶ÔÏóµÄʵÏÖ·½·¨·¢ÉúÁ˸ı䣬ֻҪ½Ó¿ÚÈÔÈ»Ïàͬ£¬¿Í»§¶Ë¾Í²»»áÊܵ½Ó°Ïì¡£
¡¡¡¡ÏÂÃæÊÇIHttpHandlerFactory½Ó¿ÚÖеķ½·¨ÁÐ±í£º
·½·¨Ãû³Æ ÃèÊö
GetHandler Õâ¸ö·½·¨¸ºÔð½¨Á¢Êʵ±µÄ´¦Àí³ÌÐò²¢°ÑËüµÄÖ¸Õë·µ»Øµ½µ÷ÓôúÂ루ASP.NETÔËÐÐʱ£©¡£Õâ¸ö·½·¨·µ»ØµÄ´¦Àí³ÌÐò¶ÔÏóÓ¦¸ÃʵÏÖÁËIHttpHandler½Ó¿Ú¡£
ReleaseHandler Õâ¸ö·½·¨¸ºÔðÔÚÇëÇó´¦ÀíÍê³ÉºóÊÍ·Åhttp´¦Àí³ÌÐò¡£Factory ʵÏÖ¾ö¶¨ÁËËüµÄ²Ù×÷¡£Factory ʵÏÖ¿ÉÒÔÊÇʵ¼Ê´Ý»ÙʵÀý£¬Ò²¿ÉÒÔ°ÑËü·ÅÈ뻺³å³Ø¹©ÒÔºóʹÓá£
¡¡¡¡ÔÚÅäÖÃÎļþÖÐ×¢²áHTTP´¦Àí³ÌÐòºÍHTTP´¦Àí³ÌÐò¹¤³§
¡¡¡¡ASP.NETÔÚÏÂÃæµÄÅäÖÃÎļþÖÐά»¤×Ô¼ºµÄÅäÖÃÐÅÏ¢£º
¡¡¡¡· machine.config
¡¡¡¡· web.config
¡¡¡¡machine.configÎļþ°üº¬Ó¦ÓÃÓÚ¼ÆËã»úÉϰ²×°µÄËùÓÐWebÓ¦ÓóÌÐòµÄÅäÖÃÉèÖÃÐÅÏ¢¡£
¡¡¡¡web.configÎļþ¶ÔÓÚÿ¸öWebÓ¦ÓóÌÐòÀ´ËµÊÇÌØ¶¨µÄ¡£Ã¿¸öWebÓ¦ÓóÌÐò¶¼ÓÐ×Ô¼ºµÄweb.configÎļþ¡£WebÓ¦ÓóÌÐòµÄÈκÎ×ÓĿ¼Ҳ¿ÉÄܰüº¬×Ô¼ºµÄweb.configÎļþ£»ÕâʹµÃËüÃÇÄܹ»¸²¸Ç¸¸Ä¿Â¼µÄÉèÖÃÐÅÏ¢¡£
ΪÁ˸øÎÒÃǵÄWebÓ¦ÓóÌÐòÌí¼ÓHTTP´¦Àí³ÌÐò£¬Äã¿ÉÒÔʹÓã¼httpHandlers£¾ºÍ£¼add£¾½Úµã¡£Êµ¼ÊÉÏ£¬´¦Àí³ÌÐò¶¼´øÓУ¼add£¾½Úµã£¬ÁоÙÔÚ£¼httpHandlers£¾ºÍ£¼/httpHandlers£¾½ÚµãÖ®¼ä¡£ÏÂÃæÊÇÌí¼ÓHTTP´¦Àí³ÌÐòµÄÒ»¸öÆÕͨµÄÀý×Ó£º
£¼httpHandlers£¾
¡¡£¼add verb="supported http verbs" path="path" type="namespace.classname, assemblyname" /£¾
£¼httpHandlers£¾
¡¡¡¡ÔÚÉÏÃæµÄXMLÖУ¬
¡¡¡¡· VerbÊôÐÔÖ¸¶¨ÁË´¦Àí³ÌÐòÖ§³ÖµÄHTTP¶¯×÷¡£Èç¹ûij¸ö´¦Àí³ÌÐòÖ§³ÖËùÓеÄHTTP¶¯×÷£¬ÇëʹÓá°*¡±£¬·ñÔòʹÓöººÅ·Ö¸ôµÄÁбíÁгöÖ§³ÖµÄ¶¯×÷¡£Òò´ËÈç¹ûÄãµÄ´¦Àí³ÌÐòÖ»Ö§³ÖHTTP GETºÍPOST£¬ÄÇôverbÊôÐÔ¾ÍÓ¦¸ÃÊÇ¡°GET, POST¡±¡£
¡¡¡¡· PathÊôÐÔÖ¸¶¨ÁËÐèÒªµ÷Óô¦Àí³ÌÐòµÄ·¾¶ºÍÎļþÃû£¨¿ÉÒÔ°üº¬Í¨Åä·û£©¡£ÀýÈ磬Èç¹ûÄãÏ£Íû×Ô¼ºµÄ´¦Àí³ÌÐòÖ»ÓÐÔÚtest.xyzÎļþ±»ÇëÇóµÄʱºò²Å±»µ÷Óã¬ÄÇôpathÊôÐԾͰüº¬¡°test.xyz¡±£¬Èç¹ûÄãÏ£Íûº¬ÓÐ.xyzºó׺µÄËùÓÐÎļþ¶¼µ÷Óô¦Àí³ÌÐò£¬pathÊôÐÔÓ¦¸Ã°üº¬¡°*.xyz¡±¡£
¡¡¡¡· TypeÊôÐÔÓÃÃû×ֿռ䡢ÀàÃû³ÆºÍ²¿¼þÃû³ÆµÄ×éºÏÐÎʽָ¶¨´¦Àí³ÌÐò»ò´¦Àí³ÌÐò¹¤³§µÄʵ¼ÊÀàÐÍ¡£ASP.NETÔËÐÐʱÊ×ÏÈËÑË÷Ó¦ÓóÌÐòµÄbinĿ¼ÖеIJ¿¼þDLL£¬½Ó×ÅÔÚÈ«¾Ö²¿¼þ»º³å£¨GAC£©ÖÐËÑË÷¡£
¡¡¡¡ASP.NETÔËÐÐʱ¶ÔHTTP´¦Àí³ÌÐòµÄʹÓ÷½Ê½
¡¡¡¡ÎÞÂÛÄãÊÇ·ñÏàÐÅ£¬ASP.NET¶¼Ê¹ÓÃHTTPÇëÇóʵÏÖÁË´óÁ¿µÄ×Ô¼ºµÄ¹¦ÄÜ¡£ASP.NETʹÓô¦Àí³ÌÐòÀ´´¦Àí.ASPx¡¢ .asmx¡¢ .soapºÍÆäËüASP.NETÎļþ¡£
¡¡¡¡ÏÂÃæÊÇmachine.configÎļþÖеÄÒ»¸öƬ¶Î£º
£¼httpHandlers£¾
¡¡£¼add verb="*" path="trace.axd" type="System.Web.Handlers.TraceHandler"/£¾
¡¡£¼add verb="*" path="*.ASPx" type="System.Web.UI.PageHandlerFactory"/£¾
¡¡£¼add verb="*" path="*.ashx" type="System.Web.UI.SimpleHandlerFactory"/£¾
¡¡£¼add verb="*" path="*.config" type="System.Web.HttpForbiddenHandler"/£¾
¡¡£¼add verb="GET,HEAD" path="*" type="System.Web.StaticFileHandler"/£¾
¡¡. . . . . .
¡¡. . . . . .
£¼/httpHandlers£¾
¡¡¡¡ÔÚÉÏÃæµÄÅäÖÃÐÅÏ¢ÖÐÄã¿ÉÒÔ¿´µ½¶Ô.ASPxÎļþµÄËùÓÐÇëÇó¶¼ÓÉSystem.Web.UI.PageHandlerFactoryÀàÀ´´¦Àí¡£Óë´ËÀàËÆ£¬¶Ô.configÎļþºÍÆäËüÎļþ£¨ËüÃDz»Äܱ»¿Í»§¶ËÖ±½Ó·ÃÎÊ£©µÄËùÓÐÇëÇó¶¼ÓÉSystem.Web.HttpForbiddenHandlerÀà´¦Àí¡£Äã¿ÉÄÜÒѾ²Âµ½£¬µ±·ÃÎÊÕâЩÎļþµÄʱºò£¬¸ÃÀà¼òµ¥µØ¸ø¿Í»§¶Ë·µ»ØÒ»¸ö´íÎóÐÅÏ¢¡£
¡¡¡¡Ö´ÐÐHTTP´¦Àí³ÌÐò
¡¡¡¡ÏÖÔÚÄ㽫¿´µ½ÈçºÎʵÏÖÒ»¸öHTTP´¦Àí³ÌÐò¡£ÄÇôÎÒÃǵÄд¦Àí³ÌÐòÒª×öʲôÈÎÎñÄØ£¿Ç°ÃæÎÒÌáµ½£¬´¦Àí³ÌÐò´ó¶àÊýÓÃÓÚ¸øWeb·þÎñÆ÷Ìí¼Óй¦ÄÜ£»Òò´Ë£¬ÎÒ½«½¨Á¢Ò»¸ö´¦Àí³ÌÐòÀ´´¦ÀíеÄÎļþÀàÐÍ¡ª¡ªÀ©Õ¹ÃûΪ.15secondsµÄÎļþ¡£ÎÒÃǽ¨Á¢ÁËÕâ¸ö´¦Àí³ÌÐò²¢ÔÚÎÒÃǵÄWebÓ¦ÓóÌÐòµÄweb.configÎļþÖÐ×¢²áÖ®ºó£¬ËùÓжÔ.15secondsÎļþµÄÇëÇó¶¼½«ÓÉÕâ¸öд¦Àí³ÌÐòÀ´´¦Àí¡£
¡¡¡¡Äã¿ÉÄÜÕýÔÚ¿¼ÂÇÕâ¸ö´¦Àí³ÌÐòµÄʹÓ÷½·¨¡£Èç¹ûÄãÏ£ÍûÒýÈëÒ»ÖÖеķþÎñÆ÷½Å±¾ÓïÑÔ»ò¶¯Ì¬·þÎñÆ÷Îļþ£¨ÀýÈçASP¡¢ASPx£©¸ÃÔõô°ìÄØ£¿Äã¿ÉÒÔΪËü±àдһ¸ö×Ô¼ºµÄ´¦Àí³ÌÐò¡£ÀàËÆµØ£¬Èç¹ûÄãÏ£ÍûÔÚIISÉÏÔËÐÐJavaС³ÌÐò¡¢JSPºÍÆäËüһЩ·þÎñÆ÷¶ËJava×é¼þÓ¦¸ÃÔõô°ìÄØ£¿Ò»ÖÖ·½·¨Êǰ²×°Ä³Ð©ISAPIÀ©Õ¹£¨ÀýÈçAllaire»òMacromedia Jrun£©¡£ÄãÒ²¿ÉÒÔ±àд×Ô¼ºµÄHTTP´¦Àí³ÌÐò¡£¾¡¹ÜÕâ¶ÔÓÚµÚÈý·½³§ÉÌ£¨ÀýÈçAllaireºÍMacromedia£©À´ËµÊǺܸ´ÔÓµÄÊÂÎñ£¬µ«ÊÇËüÈ´ÊǸöºÜÓÐÎüÒýÁ¦µÄÑ¡Ôñ£¬ÒòΪËüÃǵÄHTTP´¦ÀíÄܹ»Äܹ»·ÃÎÊASP.NETÔËÐÐʱ±©Â¶µÄËùÓÐй¦ÄÜ¡£
¡¡¡¡ÊµÏÖÎÒÃǵÄHTTP´¦Àí³ÌÐò°üº¬ÒÔϲ½Ö裺
¡¡¡¡1.±àдһ¸öʵÏÖIHttpHandler½Ó¿ÚµÄÀà¡£
¡¡¡¡2. ÔÚweb.config»òmachine.configÎļþÖÐ×¢²áÕâ¸ö´¦Àí³ÌÐò¡£
¡¡¡¡3.ÔÚInternet·þÎñ¹ÜÀíÆ÷ÖаÑÎļþÀ©Õ¹£¨.15seconds£©Ó³Éäµ½ASP.NET ISAPIÀ©Õ¹DLL£¨ASPnet_isapi.dll£©ÉÏ¡£
¡¡¡¡µÚÒ»²½
¡¡¡¡ÔÚVisual Studio.NETÖн¨Á¢Ò»¸öеÄC#Àà¿âÏîÄ¿£¬²¢°ÑËüÃüÃûΪ¡°MyHandler¡±¡£Visual Studio.NET½«×Ô¶¯µØ¸øÏîÄ¿Ìí¼ÓÒ»¸ö½Ð×ö¡°Class1.cs¡±µÄÀà¡£°ÑËü¸ÄÃûΪ¡°NewHandler¡±£»ÔÚ´úÂë´°¿ÚÖдò¿ªÕâ¸öÀ࣬²¢°ÑÀàµÄÃû³ÆºÍ¹¹Ô캯ÊýµÄÃû³Æ¸Ä³É¡°NewHandler¡±¡£
¡¡¡¡ÏÂÃæÊÇNewHandlerÀàµÄ´úÂ룺
using System;
using System.Web;
namespace MyHandler
{
¡¡public class NewHandler : IHttpHandler
¡¡{
¡¡¡¡public NewHandler()
¡¡¡¡{
¡¡¡¡¡¡// TODO: ´Ë´¦Ìí¼Ó¹¹ÔìÂß¼
¡¡¡¡}
¡¡¡¡#region Implementation of IHttpHandler
¡¡¡¡public void ProcessRequest(System.Web.HttpContext context)
¡¡¡¡{
¡¡¡¡¡¡HttpResponse objResponse = context.Response ;
¡¡¡¡¡¡objResponse.Write("£¼HTML£¾£¼body£¾£¼h1£¾Hello 15Seconds Reader ") ;
¡¡¡¡¡¡objResponse.Write("£¼/body£¾£¼/HTML£¾") ;
¡¡¡¡}
¡¡¡¡public bool IsReusable
¡¡¡¡{
¡¡¡¡¡¡get
¡¡¡¡¡¡{
¡¡¡¡¡¡¡¡return true;
¡¡¡¡¡¡}
¡¡¡¡}
¡¡¡¡#endregion
¡¡}
}
¡¡¡¡ÄãÔÚProcessRequest·½·¨ÖпÉÒÔ¿´µ½£¬¸ÃHTTP´¦Àí³ÌÐòͨ¹ýSystem.Web.HttpContext¶ÔÏó·ÃÎÊÁËËùÓÐ×÷Ϊ²ÎÊý´«µÝ¸øËüµÄASP.NETÄÚ²¿¶ÔÏó¡£ÊµÏÖProcessRequest·½·¨Ö»ÐèÒª¼òµ¥µØ´Ócontext¶ÔÏóÖÐÌáÈ¡HttpResponse¶ÔÏó²¢°Ñ·¢ËÍһЩHTML¸ø¿Í»§¶Ë¡£ÀàËÆµØ£¬IsReusable·µ»Øtrue£¬±íÃ÷Õâ¸ö´¦Àí³ÌÐò¿ÉÒÔ±»Öظ´ÓÃ×÷´¦ÀíÆäËüµÄHTTPÇëÇó¡£
¡¡¡¡ÎÒÃDZàÒëÉÏÃæµÄ´úÂë²¢°ÑËü·Åµ½webappÐéÄâĿ¼µÄbinĿ¼֮ÖС£
¡¡¡¡µÚ¶þ²½
¡¡¡¡ÔÚweb.configÎļþÖÐͨ¹ýÌí¼ÓÏÂÃæµÄÎı¾À´×¢²áÕâ¸ö´¦Àí³ÌÐò£º
£¼httpHandlers£¾
¡¡£¼add verb="*" path="*.15seconds" type="MyHandler.NewHandler,MyHandler"/£¾
£¼/httpHandlers£¾
¡¡¡¡µÚÈý²½
¡¡¡¡[img][/img]
×öÈËÒªºñµÀ£¬Çë×¢Ã÷ת×Ô¿áÍø¶¯Á¦(www.ASPCOOL.COM)¡£

