aspx与ashx
包含了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 他很惊奇,郁闷了他一天的问题一下解决了,希望以后看到这里时不再郁闷我就满意了。
下面把当时我帮他修改的文件也贴出来,一个简单的验证码生成文件。VadidateCode.rar