1. Êý¾Ý¿â·ÃÎÊÐÔÄÜÓÅ»¯
Êý¾Ý¿âµÄÁ¬½ÓºÍ¹Ø±Õ
·ÃÎÊÊý¾Ý¿â×ÊÔ´ÐèÒª´´½¨Á¬½Ó¡¢´ò¿ªÁ¬½ÓºÍ¹Ø±ÕÁ¬½Ó¼¸¸ö²Ù×÷¡£ÕâЩ¹ý³ÌÐèÒª¶à´ÎÓëÊý¾Ý¿â½»»»ÐÅÏ¢ÒÔͨ¹ýÉí·ÝÑéÖ¤£¬±È½ÏºÄ·Ñ·þÎñÆ÷×ÊÔ´¡£ASP.NETÖÐÌṩÁËÁ¬½Ó³Ø(Connection Pool)¸ÄÉÆ´ò¿ªºÍ¹Ø±ÕÊý¾Ý¿â¶ÔÐÔÄܵÄÓ°Ï졣ϵͳ½«Óû§µÄÊý¾Ý¿âÁ¬½Ó·ÅÔÚÁ¬½Ó³ØÖУ¬ÐèҪʱȡ³ö£¬¹Ø±ÕʱÊÕ»ØÁ¬½Ó£¬µÈ´ýÏÂÒ»´ÎµÄÁ¬½ÓÇëÇó¡£Á¬½Ó³ØµÄ´óСÊÇÓÐÏ޵ģ¬Èç¹ûÔÚÁ¬½Ó³Ø´ïµ½×î´óÏ޶ȺóÈÔÒªÇó´´½¨Á¬½Ó£¬±ØÈ»´ó´óÓ°ÏìÐÔÄÜ¡£Òò´Ë£¬ÔÚ½¨Á¢Êý¾Ý¿âÁ¬½ÓºóÖ»ÓÐÔÚÕæÕýÐèÒª²Ù×÷ʱ²Å´ò¿ªÁ¬½Ó£¬Ê¹ÓÃÍê±ÏºóÂíÉϹرգ¬´Ó¶ø¾¡Á¿¼õÉÙÊý¾Ý¿âÁ¬½Ó´ò¿ªµÄʱ¼ä£¬±ÜÃâ³öÏÖ³¬³öÁ¬½ÓÏÞÖÆµÄÇé¿ö¡£
ʹÓô洢¹ý³Ì
´æ´¢¹ý³ÌÊÇ´æ´¢ÔÚ·þÎñÆ÷ÉϵÄÒ»×éÔ¤±àÒëµÄSQLÓï¾ä£¬ÀàËÆÓÚDOSϵͳÖеÄÅú´¦ÀíÎļþ¡£´æ´¢¹ý³Ì¾ßÓжÔÊý¾Ý¿âÁ¢¼´·ÃÎʵŦÄÜ£¬ÐÅÏ¢´¦Àí¼«ÎªÑ¸ËÙ¡£Ê¹Óô洢¹ý³Ì¿ÉÒÔ±ÜÃâ¶ÔÃüÁîµÄ¶à´Î±àÒ룬ÔÚÖ´ÐÐÒ»´ÎºóÆäÖ´Ðй滮¾ÍפÁôÔÚ¸ßËÙ»º´æÖУ¬ÒÔºóÐèҪʱֻÐèÖ±½Óµ÷Óûº´æÖеĶþ½øÖÆ´úÂë¼´¿É¡£ÁíÍ⣬´æ´¢¹ý³ÌÔÚ·þÎñÆ÷¶ËÔËÐУ¬¶ÀÁ¢ÓÚASP.NET³ÌÐò£¬±ãÓÚÐ޸ģ¬×îÖØÒªµÄÊÇËü¿ÉÒÔ¼õÉÙÊý¾Ý¿â²Ù×÷Óï¾äÔÚÍøÂçÖеĴ«Êä¡£
ÓÅ»¯²éѯÓï¾ä
ASP.NETÖÐADOÁ¬½ÓÏûºÄµÄ×ÊÔ´Ï൱´ó£¬SQLÓï¾äÔËÐеÄʱ¼äÔ½³¤£¬Õ ......
Ò»¡¢Î¯ÍÐ
£¨1£© ίÍÐʱһÖÖÒýÓ÷½·¨µÄÀàÐÍ£¬Ò»µ©ÎªÎ¯ÍзÖÅäÁË·½·¨£¬Î¯Íн«Óë¸Ã·½·¨¾ßÓÐÍêÈ«ÏàͬµÄÐÐΪ£¬Î¯Íз½·¨µÄ´øÅ¶ÓÿÉÒÔÏñ
ÆäËû·½·¨Ò»Ñù£¬¾ßÓвÎÊýºÍ·µ»ØÖµ£¬
È磺 public delegate int PerformCalculation(int x, int y);
£¨2£© ίÍÐ ÊÇÒ»ÖÖ°²È«µÄ·â×°·½·¨µÄÀàÐÍ£¬ÓëC++ µÄº¯ÊýÖ¸ÕëÀàËÆ£¬µ«Î¯ÍÐÊ±ÃæÏò¶ÔÏóµÄ£¬ÀàÐͰ²È«£¬
¹¹ÔìίÍжÔÏóʱ£¬Í¨³£ÌṩίÍн«°ü×°µÄ·½·¨»òʹÓÃÄäÃû·½·¨£¬ÊµÀý»¯Î¯Íкó£¬Î¯Íн«°Ñ¶ÔËü½øÐеķ½·¨µ÷Óô«¸ø·½·¨£¬
µ÷Ó÷½·¨¸øÎ¯ÍеIJÎÊý±»´«µÝ¸ø·½·¨£¬À´×Ô·½·¨µÄ·µ»ØÖµÓÐίÍзµ»Ø¸øµ÷Ó÷½£¬³ÆÎª“µ÷ÓÃίÍД£¬
¶þ¡¢ºÎʱʹÓÃίÍжø²»Ê¹ÓýӿÚ
1.ÒÔÏÂÇé¿öʹÓÃίÍУº
µ±Ê¹ÓÃʼþÉè¼ÆÄ£Ê½µÄʱºò
µ±·â×°¾²Ì¬·½·¨¿ÉÈ¡µÄʱºò£¬
µ±µ÷Ó÷½²½ÐèÒª·ÃÎÊʵÏָ÷½·¨µÄ¶ÔÏóÖÐµÄÆäËûÊôÐÔ ¡¢·½·¨»òÕß½Ó¿Ú
  ......
¿´ÁËÄÇô¶à£¬»¹ÊÇÇ××Ô¶¯ÊÖʵ¼ùÏÂÓÐЧ¹û¡£
ÒýÓà °Ù¶È ÑîÔÆ·ÉaiÉú»î
ASP.NET 2.0 ʵÏÖα¾²Ì¬ÍøÒ³·½·¨
·½·¨Ò»£ºÀûÓÃHttphandlerʵÏÖURLÖØÐ´£¨Î±URL¼°Î±¾²Ì¬£©
ÎÒÃÇÓÐʱºò»á¼ûµ½ÕâÑùµÄµØÖ·£º“http://www.huoho.com/show-12-34.html”£¬Äã»òÐíÈÏΪÔÚÕ¾µã·þÎñÆ÷¸ùĿ¼“/”Ï´æÔÚÃûΪ“show-12-34.html”µÄÎļþ£¬Æäʵʵ¼ÊËü¿ÉÄÜÊDz»´æÔڵ쬶ø¿ÉÄÜÄã¿´µ½µÄÄÚÈÝÊÇ“/aspx/show.aspx?type= 12&id=34”µÄÄÚÈÝ£¬ÎªÊ²Ã´ÒªÕâÑù×öÄØ£¿ÔÒòÓжà¸ö·½Ã棺Ê×ÏÈÊÇÔöÇ¿URLµÄÓѺÃÐÔ£¬¼Ç“show-12-34.html”×Ü±È “/aspx/show.aspx?type=12&id=34”ºÃ¼Ç°É£¿Æä´Î¾ÍÊÇ·½±ãËÑË÷ÒýÇæÊÕ¼£¬ºÜ¶àËÑË÷ÒýÇæ¸ü¿´ºÃ¾²Ì¬HTMLÒ³£¬±ÈÈ磺°Ù¶È£»Æä´Î¾ÍÊdzöÓÚ°²È«ÐԵĿ¼ÂÇ£¬ÒòΪÕâÑùÒþ²ØÁ˲ÎÊý“type”¡¢“id”¡£ÊDz»ÊǺÜÓÐÒâË¼ÄØ£¿
ÆäʵÕâÊÇÀûÓÃURLÖØÐ´ÊµÏֵģ¬ÏÂÃæÎÒ¾Í˵һÏÂÔÚASP.NET2.0ÏÂÎÒËùÖªµÀµÄ×î¼òµ¥µÄʵÏÖ·½·¨£ºÍ¨¹ýʵÏÖ½Ó¿Ú“IHttpHandler”À´½Ó¹ÜHTTPÇëÇó£¬Follow me!
1.ÔÚ×ÊÔ´¹ÜÀí·½°¸ÖÐÌí¼ÓÒ»¸öÀ࣬ÀàµÄ´úÂëÈçÏ£º
//ÀàURLRewriter³ÌÐòÇåµ¥£º
us ......
¶ÔÓÚasp.net,ĬÈÏÖ»ÔÊÐíÉÏ´«2MÎļþ,Ôö¼ÓÈçÏÂÅäÖÃ,Ò»°ã¿ÉÒÔ×Ô¶¨Òå×î´óÎļþ´óС.
<httpRuntime executionTimeout="300" maxRequestLength="40960" useFullyQualifiedRedirectUrl="false"/>
ÎÒÃÇÔÚÉÏ´«´óÎļþʱ¶¼Óöµ½¹ýÕâÑù»òÄÇÑùµÄÎÊÌâ¡£ÉèÖúܴóµÄmaxRequestLengthÖµ²¢²»ÄÜÍêÈ«½â¾öÎÊÌ⣬ÒòΪASP.NET»áblockÖ±µ½°Ñ
Õû¸öÎļþÔØÈëÄÚ´æºó£¬ÔÙ¼ÓÒÔ´¦Àí¡£Êµ¼ÊÉÏ£¬Èç¹ûÎļþºÜ´óµÄ»°£¬ÎÒÃǾ³£»á¼ûµ½Internet ExplorerÏÔʾ "The page
cannot be displayed - Cannot find server or DNS
Error"£¬ºÃÏñÊÇÔõôҲcatch²»ÁËÕâ¸ö´íÎó¡£ÎªÊ²Ã´£¿ÒòΪÕâÊǸöclient side´íÎó£¬server
side¶ËµÄApplication_ErrorÊÇ´¦Àí²»µ½µÄ£¬¿ÉÒԲο¼Õâ¸öÌû×ÓÑо¿Ò»Ï²úÉúÕâ¸ö´íÎóµÄ»úÀí¡£
handling server error when upload file too large
½â¾öµÄ·½·¨ÊÇÀûÓÃÒþº¬µÄHttpWorkerRequest£¬ÓÃËüµÄGetPreloadedEntityBody ºÍ
ReadEntityBody·½·¨´ÓIISΪASP.NET½¨Á¢µÄpipeÀï·Ö¿é¶ÁÈ¡Êý¾Ý,Chris
HynesΪÎÒÃÇÌṩÁËÕâÑùµÄÒ»¸ö·½°¸(ÓÃHttpModule)£¬¸Ã·½°¸³ýÁËÔÊÐíÄãÉÏ´«´óÎļþÍ⣬»¹ÄÜʵʱÏÔʾÉÏ´«½ø¶È¡£
IServiceProvider provider = ......
¶ÔÓÚasp.net,ĬÈÏÖ»ÔÊÐíÉÏ´«2MÎļþ,Ôö¼ÓÈçÏÂÅäÖÃ,Ò»°ã¿ÉÒÔ×Ô¶¨Òå×î´óÎļþ´óС.
<httpRuntime executionTimeout="300" maxRequestLength="40960" useFullyQualifiedRedirectUrl="false"/>
ÎÒÃÇÔÚÉÏ´«´óÎļþʱ¶¼Óöµ½¹ýÕâÑù»òÄÇÑùµÄÎÊÌâ¡£ÉèÖúܴóµÄmaxRequestLengthÖµ²¢²»ÄÜÍêÈ«½â¾öÎÊÌ⣬ÒòΪASP.NET»áblockÖ±µ½°Ñ
Õû¸öÎļþÔØÈëÄÚ´æºó£¬ÔÙ¼ÓÒÔ´¦Àí¡£Êµ¼ÊÉÏ£¬Èç¹ûÎļþºÜ´óµÄ»°£¬ÎÒÃǾ³£»á¼ûµ½Internet ExplorerÏÔʾ "The page
cannot be displayed - Cannot find server or DNS
Error"£¬ºÃÏñÊÇÔõôҲcatch²»ÁËÕâ¸ö´íÎó¡£ÎªÊ²Ã´£¿ÒòΪÕâÊǸöclient side´íÎó£¬server
side¶ËµÄApplication_ErrorÊÇ´¦Àí²»µ½µÄ£¬¿ÉÒԲο¼Õâ¸öÌû×ÓÑо¿Ò»Ï²úÉúÕâ¸ö´íÎóµÄ»úÀí¡£
handling server error when upload file too large
½â¾öµÄ·½·¨ÊÇÀûÓÃÒþº¬µÄHttpWorkerRequest£¬ÓÃËüµÄGetPreloadedEntityBody ºÍ
ReadEntityBody·½·¨´ÓIISΪASP.NET½¨Á¢µÄpipeÀï·Ö¿é¶ÁÈ¡Êý¾Ý,Chris
HynesΪÎÒÃÇÌṩÁËÕâÑùµÄÒ»¸ö·½°¸(ÓÃHttpModule)£¬¸Ã·½°¸³ýÁËÔÊÐíÄãÉÏ´«´óÎļþÍ⣬»¹ÄÜʵʱÏÔʾÉÏ´«½ø¶È¡£
IServiceProvider provider = ......
Èý²ã¼Ü¹¹(3-tier application) ͨ³£ÒâÒåÉϵÄÈý²ã¼Ü¹¹¾ÍÊǽ«Õû¸öÒµÎñÓ¦Óû®·ÖΪ£º±íÏֲ㣨UI£©¡¢ÒµÎñÂß¼²ã£¨BLL£©¡¢Êý¾Ý·ÃÎʲ㣨DAL£©¡£Çø·Ö²ã´ÎµÄÄ¿µÄ¼´ÎªÁË“¸ßÄÚ¾Û£¬µÍñîºÏ”µÄ˼Ïë¡£
1¡¢±íÏֲ㣨UI£©£ºÍ¨Ë×½²¾ÍÊÇÕ¹ÏÖ¸øÓû§µÄ½çÃæ£¬¼´Óû§ÔÚʹÓÃÒ»¸öϵͳµÄʱºòËûµÄËù¼ûËùµÃ¡£
2¡¢ÒµÎñÂß¼²ã£¨BLL£©£ºÕë¶Ô¾ßÌåÎÊÌâµÄ²Ù×÷£¬Ò²¿ÉÒÔ˵ÊǶÔÊý¾Ý²ãµÄ²Ù×÷£¬¶ÔÊý¾ÝÒµÎñÂß¼´¦Àí¡£
3¡¢Êý¾Ý·ÃÎʲ㣨DAL£©£º¸Ã²ãËù×öÊÂÎñÖ±½Ó²Ù×÷Êý¾Ý¿â£¬Õë¶ÔÊý¾ÝµÄÔöÌí¡¢É¾³ý¡¢Ð޸ġ¢¸üС¢²éÕҵȡ£
Èý²ã½á¹¹ÔÀí£º
3¸ö²ã´ÎÖУ¬ÏµÍ³Ö÷Òª¹¦ÄܺÍÒµÎñÂß¼¶¼ÔÚÒµÎñÂß¼²ã½øÐд¦Àí¡£
ËùνÈý²ãÌåϵ½á¹¹£¬ÊÇÔÚ¿Í»§¶ËÓëÊý¾Ý¿âÖ®¼ä¼ÓÈëÁËÒ»¸ö“Öмä²ã”£¬Ò²½Ð×é¼þ²ã¡£ÕâÀïËù˵µÄÈý²ãÌåϵ£¬²»ÊÇÖ¸ÎïÀíÉϵÄÈý²ã£¬²»ÊǼòµ¥µØ·ÅÖÃÈý̨»úÆ÷¾ÍÊÇÈý²ãÌåϵ½á¹¹£¬Ò²²»½ö½öÓÐB/SÓ¦ÓòÅÊÇÈý²ãÌåϵ½á¹¹£¬Èý²ãÊÇÖ¸Âß¼ÉϵÄÈý²ã£¬¼´Ê¹ÕâÈý¸ö²ã·ÅÖõ½Ò»Ì¨»úÆ÷ÉÏ¡£
Èý²ãÌåϵµÄÓ¦ÓóÌÐò½«ÒµÎñ¹æÔò¡¢Êý¾Ý·ÃÎÊ¡¢ºÏ·¨ÐÔУÑéµÈ¹¤×÷·Åµ½ÁËÖмä²ã½øÐд¦Àí¡£Í¨³£Çé¿öÏ£¬¿Í»§¶Ë²»Ö±½ÓÓëÊý¾Ý¿â½øÐн»»¥£¬¶øÊÇͨ¹ýCOM/DCOMͨѶÓëÖмä²ã½¨Á¢Á¬½Ó£¬ÔÙ¾ ......
Ö±½ÓÔÚASP.netÖÐÉÏ´«´óÎļþµÄ·½·¨£®
·½·¨Ò»£ºÔÚweb.configÖÐÌí¼Ó<httpRuntime maxRequestLength="100000" executionTimeout="45"/>
·½·¨¶þ£ºÐ޸ģɣɣÓÅäÖÃÎļþwindows->system32->inetsrv->metaBase.XML
·½·¨Èý£º
1£® httpHandler or HttpModule
a.ÔÚASP.net½ø³Ì´¦ÀírequestÇëÇó֮ǰ½Ø»ñrequest¶ÔÏó
b.·Ö¿é¶ÁÈ¡ºÍдÈëÊý¾Ý
c.ʵʱ¸ú×ÙÉÏ´«½ø¶È¸üÐÂmetaÐÅÏ¢
2£® ÀûÓÃÒþº¬µÄHttpWorkerRequestÓÃËüµÄGetPreloadedEntityBody ºÍ ReadEntityBody·½·¨´¦ÀíÎļþÁ÷
ÉÏ´«´úÂë
HttpApplication application1 = sender as HttpApplication;
HttpWorkerRequest request1 = (HttpWorkerRequest) ((IServiceProvider) HttpContext.Current).GetService(typeof(HttpWorkerRequest));
try
{
if (application1.Context.Request.ContentType.IndexOf("multipart/form-data") <= -1)
{
return;
}
//Check The HasEntityBody
if (!request1.HasEntityBody())
{
return;
}
int num1 = 0;
TimeSpan span1 =&nb ......