Asp.net web (即 aspx 页面)是由 System.Web.UI.Page 派生的类表示,示例: public partial class UserCenter : System.Web.UI.Page
包含了web页面的全部功能,比如我们经常使用到的控件,包括用户控件,以及master page等都来自于page,功能十分强大
Asp.net一般处理程序(即ashx文件)IHttpHandler接口派生而来。接口本身没有任何功能,只是声明了一系列成员,有接口派生类来实现,示例:
public class checkmail : IHttpHandler
很显然,ashx文件不需要page那么大的开销,功能也有一定的限制,但是在完成我常用的基本的任务时(用用户名检测,验证码等),他的效率就明显地比aspx页面高了。这里要提到几点,也许我们该注意下,创建一个一般处理程序时IHttpHandler的两个成员值得我们注意ProcessRequest ()和bool IsReusable。显然,前者在加载一般处理程序时执行,至于后者嘛,布尔属性判断该程序是否可被其他请求重用。
用一般处理程序生成验证码效率会比web窗体高,所以选用了一般处理程序。但是在处理session时,却总是遇到了问题。一般程序由IHttpHandler接口派生而来,其本身却无法初始化session,所以一直报错。添加一个命名空间System.Web.SessionState,再添加了一个派生接口IRequiresSessionState 即可