ASP.NETÖеÄHTTPÄ£¿éºÍ´¦Àí³ÌÐò 2-.Net¼¼Êõ-3P´úÂëÍø
¡¾·±ÌåÖÐÎÄ¡¿
¡¾ÉèΪÊ×Ò³¡¿
¡¾¼ÓÈëÊղء¿
µ±Ç°Î»Öãº.Net¼¼ÊõÊ×Ò³ >> Asp.Net¿ª·¢ >> ASP.NETÖеÄHTTPÄ£¿éºÍ´¦Àí³ÌÐò 2

ASP.NETÖеÄHTTPÄ£¿éºÍ´¦Àí³ÌÐò 2

2007-10-15 08:00:00  ×÷Õߣº  À´Ô´£º»¥ÁªÍø  ä¯ÀÀ´ÎÊý£º0  ÎÄ×Ö´óС£º¡¾´ó¡¿¡¾ÖС¿¡¾Ð¡¡¿
¼ò½é£ºHttp´¦Àí³ÌÐò ¡¡¡¡HTTP´¦Àí³ÌÐòÊÇʵÏÖÁËSystem.Web.IHttpHandler½Ó¿ÚµÄ.NET×é¼þ¡£ÈκÎʵÏÖÁËIHttpHandler½Ó¿ÚµÄÀà¶¼¿ÉÒÔÓÃÓÚ´¦ÀíÊäÈëµÄHTTPÇëÇó¡£HTTP´¦Àí³ÌÐòÓëISAPIÀ©Õ¹ÓÐЩÀàËÆ¡£HTTP´¦Àí³ÌÐòºÍISAPIÀ©Õ¹µÄ²î...

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)¡£

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