天天看点

<httpHandlers>的配置和使用

前两天 领导让改了一个控件,就是 百度编辑器的  前台处理和后台处理分开,简单的说,是把 .ashx的页面单独编译成dll ,

前后想了想,.ashx文件又没有cs代码,怎么能编译?尝试了几次没能成功,后来用了这么一个办法,问题成功解决!

  思路:通过 httpHandlers 自定义 http 访问时做的处理,当前台的JS 访问到 .ashx文件时,我就把他指向一个类去处理,类可以编译成dll ,所有问题就解决了。

具体代码: config 配置   

<system.web>
    <httpHandlers>
      <add verb="*" path="imageUp.ashx" type="UploadLyp.net.imageUp,UploadLyp" validate="false"/>
      <add verb="*" path="fileUp.ashx" type="UploadLyp.net.fileUp,UploadLyp" validate="false"/>
      <add verb="*" path="getContent.ashx" type="UploadLyp.net.getContent,UploadLyp" validate="false"/>
      <add verb="*" path="getMovie.ashx" type="UploadLyp.net.getMovie,UploadLyp" validate="false"/>
      <add verb="*" path="getRemoteImage.ashx" type="UploadLyp.net.getRemoteImage,UploadLyp" validate="false"/>
      <add verb="*" path="imageManager.ashx" type="UploadLyp.net.imageManager,UploadLyp" validate="false"/>
      <add verb="*" path="scrawlUp.ashx" type="UploadLyp.net.scrawlUp,UploadLyp" validate="false"/>
    </httpHandlers>

 <system.web>
           

简单解释一下,verb="*"   是任何的 访问请求

                         path="imageUp.ashx"   这是具体访问的 类型,也可以是 *.jpg,*.rar

                         type="UploadLyp.net.getRemoteImage,(这里有逗号)UploadLyp"   // 逗号前是  命名空间+类名字,逗号以后是  编译成的 dll 名称

                         validate="false"//  这个我也不是很清楚,应该是不验证的意思

配置好以后,我们就可以写类了,把 。ashx要处理的逻辑全都放在 类里面去执行,但是类里必须要继承一个类 IHttpHandler ,要有 public void ProcessRequest(HttpContext context){} 

 和 public bool IsReusable

        {

            get

            {

                return false;

            }

        }

这样就可以处理你的逻辑了