下班的时候QQ风雨无阻,问她有多久没有主动去看看技术的文章或者书籍了,回答和我现在的状况差不多,N久没看了,不是不想看,而是没时间看,总是有写不完的代码,不写代码时也不想看了,或许有些东西只有需要才会去学吧。
一 直以来用Asp.Net写网站程序,基本上只用到.aspx和.ascx两种扩展名,以至于把.ashx忘的光光的,到后来自己用Ajax向服务器发请求 时,也是直接请求的aspx页面,既派生于Page的对象,更好的方式应该是使用.ashx来做为Ajax的响应URL,因为ashx页面和 WebHandler指令将实例化了一个派生于IHttpHandler的对象,只需要在ProcessRequest方法里写响应代码即可,相对 Page显然轻量很多。
看了下ASP.NET的所有指令:@Page,@Control,@Import,@Implements,@Register,@Assembly,@Master,@WebHandler,
@PreviousPageType,@MasterType,@OutputCache,@Reference,有12个之多,就挨个再学习一遍吧,从@WebHandler开始。
@WebHandler 为Http handler文件(.ashx)定义属性(Attribute)和编译选项。
属性
Class 指定一个继承自IHttpHandler的类,当handler被请求时将被实例化用来响应请求。这个属性是必须的
CodeBehind 指定Class对应的文件,基本上没用,主要是用来支持VS显示的,可以去掉。
编译选项
Debug 默认是false,所以非调试就不用打开,影响性能,可以省略
Description 关于当前handler的描述,ASP.NET解析时忽略,可能调试时能提供辅助信息,可以省略
Language 默认C# ,可以省略
WarningLevel 0-4 默认我也不知道是几,可以省略。
使用ashx的好处就是不需要在Web.Config中配置,就可以直接用IHttpHandler派生类来处理请求,一些常见的应用场景:动态生成图片(比如验证码),响应Ajax请求等。
本文首发于:http://www.wanlei.net/2009/05/31/ashx-webhandler/