日期:2014-05-17 浏览次数:20988 次
一. 概述
?
?? 新建一个ashx文件? 代码如下
<%@ WebHandler Language="C#" Class="TestHandler" %> using System; using System.Web; public class TestHandler : IHttpHandler { //dd public void ProcessRequest (HttpContext context) { context.Response.ContentType = "text/plain"; context.Response.Write("Hello World"); } //dd public bool IsReusable { get { return false; } } }
?
二. 解析
?
?? 1).
<%@ WebHandler Language="C#" Class="TestHandler" %>
?
???? @WebHandler为ASP.NET页面的一个指令 指定为Http handler文件(.ashx)定义属性(Attribute)和编译选项
?????? 属性
??????????? Class 指定一个继承自IHttpHandler的类,当handler被请求时将被实例化用来响应请求。这个属性是必须的
??????????? CodeBehind 指定Class对应的文件,基本上没用,主要是用来支持VS显示的,可以去掉。
?
????? 编译选项
?????????? Debug 默认是false,所以非调试就不用打开,影响性能,可以省略
?????????? Description 关于当前handler的描述,ASP.NET解析时忽略,可能调试时能提供辅助信息,可以省略
?????????? Language 默认C# ,可以省略
?????????? WarningLevel 0-4 有默认值,可以省略。
?? 2).
?
??????? 接下来是底下建立的类
??????????????????? 实现了一个关键的接口:System.Web.IHttpHandler。实现它表明将以何种方式来处理来自外部的请求。
???????????????????????????? 参数context是System.Web.HttpContext类型
???????????????????????????? context对象提供对用于为 HTTP 请求提供服务的内部服务器对象(如 Request、Response、
???????????????????????????????????????? Session 和 Server)的引用,也即可以访问我们的几大服务器对象。
????????????????????????????? 可以在ProcessRequest方法中编写如何处理请求的细节
<%@ WebHandler Language="C#" Class="ImageHandler" %> using System; using System.Web; /// <summary> /// 这就一个没有任何实现的一般处理程序。 /// </summary> public class ImageHandler : IHttpHandler { public void ProcessRequest (HttpContext context) { //获取虚拟目录的物理路径。 string path = context.Server.MapPath(""); //获取图片文件的二进制数据。