一般处理程序

前序突然听到”一般处理程序“这个词,突然有种蒙的感觉,这是什么东东??

简介一般处理程序的一般是相对于aspx页面来说。就是说什么请求都可以处理。正如它的名字,“一般处理程序”,是用来处理一般的web请求的,所谓一般也可以理解为简单,也就是更接近底层的东西。说的通俗一点儿,aspx文件包装 的非常好,处理请求变的很简单,而ashx文件没做啥包装,一切都要靠程序员自己来处理,所以更适合没有回滚需要的简单需求。创建起来也很简单,也就是创建一个类文件,在其中实现IHttpHandler接口就行了。看过ashx常用的几个经典示例,比如图片、二进制文件生成,比如RSS生成等等。

创建aspx

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Linkin.Web.HttpHandler
{
    /// <summary>
    /// Handler1 的摘要说明
    /// </summary>
    public class Handler1 : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            context.Response.Write("Hello World");
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}
View Code

以上为刚创建的一个空的‘一般处理程序’,包含2个固定的方法。可以正常运行,运行时直接 空间名/类名.ashx即可

 

分析

打开网页,不管我们请求的是静态资源还是动态 资源,IIS都会根据ISAPI(微软和Process软件公司联合提出的Web服务器上的API标准)这一标准,将请求的文件根据文件后缀名的不同,转 交给不同的处理程序。打开IIS可以看到,大部分文件都交给了aspnet_isapi.dll进行处理,但是aspnet_isapi.dll不可能对 所有文件都进行一样方式的处理

为了了解aspnet_isapi.dll如何进行进一步处理的,我们可以打开C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Web.config文件。可以看到,在<httpHandler>节点中将不同的文件类型映射给不同的handler去处理(为了方便截图,删掉了一部分映射)。

 

 

实现

在项目的web.config中加入配置:

 

<system.web>
    <httpHandlers>
      <add verb="*" path="*.jpg" type="Houses.Web.Upload.ImageHandler, Houses.Web" />  //当程序遇到.jpg的图片时,即会直接走Houses.Web.Upload.ImageHandler程序
    </httpHandlers>
  </system.web>

 

加入配置后,运行项目出现配置错误,只能说明是你的Handler文件有问题。仔细检查一下Handler的class名字是否正确。

 

推荐文章http://www.cnblogs.com/JimmyZhang/archive/2007/09/15/894124.html

 

 

posted @ 2014-07-12 10:07  细数青春  阅读(2126)  评论(0编辑  收藏  举报