在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一. 概述
新建一个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)和编译选项 属性
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(""); //获取图片文件的二进制数据。 byte[] datas = System.IO.File.ReadAllBytes(path + http://www.cnblogs.com/dongpo888/admin/file:////123.jpg); //将二进制数据写入到输出流中。 context.Response.OutputStream.Write(datas, 0, datas.Length); } public bool IsReusable { get { return false; } } }
而IsReusable表明其它的请求是否可以使用这个类的一个实例。
使用ashx的好处就是不需要在Web.Config中配置,就可以直接用IHttpHandler派生类来处理请求。 常见的应用场景:动态生成图片(比如验证码),响应Ajax请求等。
三. aspx、ascx和ashx 可参考如下博客 点击链接 |
请发表评论