ASP.NET运行机制之一般处理程序(ashx)
2012-02-23 13:06
627 查看
一. 概述
新建一个ashx文件 代码如下
二. 解析
1).
@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方法中编写如何处理请求的细节
而IsReusable表明其它的请求是否可以使用这个类的一个实例。
使用ashx的好处就是不需要在Web.Config中配置,就可以直接用IHttpHandler派生类来处理请求。
常见的应用场景:动态生成图片(比如验证码),响应Ajax请求等。
三. aspx、ascx和ashx
可参考如下博客
点击链接
新建一个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(""); //获取图片文件的二进制数据。 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
可参考如下博客
点击链接
相关文章推荐
- 对ASP.NET运行机制之 一般处理程序ashx的学习
- ASP.NET运行机制之一般处理程序(ashx)
- ASP.NET一般处理程序(.ashx.cs)中使用Session的问题
- ASP.NET的ASHX一般处理程序中Session为null且不能赋值
- ASP.NET的ASHX一般处理程序中Session为null且不能赋值
- asp.net 一般处理程序 .ashx 处理各种验证码 一维码 二维码
- 网上看到的 asp.net 一般处理程序(.ashx)
- Asp.net 一般处理程序.ashx中对Session的操作
- Android调用asp.net编写的*.ashx(一般处理程序)获取数据
- ASP.NET MVC 项目中 一般处理程序ashx 获取Session
- asp.net的验证码插件及方法、ashx验证码一般处理程序
- asp.net- ajax简单入门使用方法,通过一般处理程序ashx进行处理
- ASP.NET 使用一般处理程序.ashx进行 Excel下载
- asp.net 一般处理程序Handler.ashx应用实例
- ASP.NET ----ashx一般处理程序
- ASP.NET-C# Post 一般处理程序(ashx)并得到返回值
- ASP.NET ASHX 一般处理程序教程
- asp.net .ashx一般处理程序中使用Session
- ASP.NET的ASHX一般处理程序中Session为null且不能赋值
- asp.net一般处理程序(.ashx)动态生成验证码案例。