zoukankan      html  css  js  c++  java
  • 我的HttpHandler 理解

     httphandler在网上一搜到处都是,可是要是能变成自己的httphandler需要理解了才行。比如要在网页上显示图片,可以用httphandler来实现,使加快相应速度。不去处理那些不必要的操作。
    可以看看这篇文章
    http://www.cnblogs.com/HeroBeast/archive/2008/02/13/1067857.html

    其实图片在web里也是通过httphandler来处理的 ,如下

     1 public IHttpHandler GetHandler(HttpContext context, string requestType, string url, string pathTranslated)
     2     {
     3         string imgType = context.Request.QueryString["ext"];
     4         if(string.IsNullOrEmpty(imgType))
     5             imgType = "jpg";
     6         imgType = imgType.ToLower();
     7 
     8         if (imgType == "jpg")
     9             return new JpgHandler();
    10         else
    11             return new GifHandler();
    12     }

    这是通过IHttpHandlerFactory来实现的。
    但是时候是想对aspx页面进行处理,要是web.config是这样写的
    1  <httpHandlers>
    2       <add verb="*" path="*" type="BaseHttpHandlerFactory.BaseHttpHandlerFactory,BaseHttpHandlerFactory"/>
    3 </httpHandlers>
    4     

    也是用工厂模式的httphandler实现的其实我只想对两个页面进行处理,HttpHandler1.aspxHttpHandler2.aspx,其余的aspx我还想用系统默认的处理该怎么做呢?看下面的
     1  public IHttpHandler GetHandler(HttpContext context, string requestType, string url, string pathTranslated)
     2         {
     3             string strHttpHandler = url.ToString();
     4 
     5             if (strHttpHandler.Contains("HttpHandler1.aspx"))
     6             {
     7                 return new HttpHandler1();
     8             }
     9             else if (strHttpHandler.Contains("HttpHandler2.aspx"))
    10             {
    11                 return new HttpHandler2();
    12             }
    13             else
    14             {
    15                 //系统默认处理
    16                 return PageParser.GetCompiledPageInstance(url, pathTranslated, context);
    17             }
    18 
    19 
    20         }
    看到第16行了吧,这样就可以实现HttpHandler1.aspx用httphandler1进行处理HttpHandler2.aspx用httphandler2进行处理了,其余的用page默认的httphandler进行处理。

    下载源代码:/Files/HeroBeast/HttpHandlerSolution.rar

  • 相关阅读:
    JS进阶篇2---函数防抖(debounce)
    vue 的"响应式"是什么意思/ Object.freeze( ) 阻止数据响应
    try{...}catch(){...}语句的使用
    总结一下ES6的promise
    《ES6标准入门》(六)之Promise对象2——then()和catch()方法
    大白话讲解Promise(一)
    解决VSCode单击文件会替换已经打开文件的问题
    通俗理解“回调函数”
    vue中的时间格式处理
    vue之项目踩坑笔记
  • 原文地址:https://www.cnblogs.com/HeroBeast/p/1067977.html
Copyright © 2011-2022 走看看