一 什么是一般处理文件
1.1 WHAT
虽然通过标准的方式可以创建处理程序,但是实现的步骤比较复杂,为了方便网站开发中对处理程序的应用,从ASP.NET 2.0开始,ASP.NET提供了称为一般处理程序的处理程序,允许我们使用比较简单的方式定义扩展名为ASHX的专用处理程序是一种较为简单、高效的处理程序,在非WEB窗体处理的请求中有着重要的作用。
1.2 WHY
对于ASP.NET网站来说,网站最常规的处理结果就是HTML网页,生成网页的工作通常使用扩展名为ASPX的WEB窗体来完成。对于非WEB窗体处理的请求,都可以通过一般处理程序完成,适合产生供浏览器处理的、不需要回发处理的数据格式,例如生成RSS、FEED、XML、图片等动态内容。
ASHX通常是实现IHTTPHANDLER接口,因为不必继承自PAGE类,它免去了普通.ASPX页面的控件解析以及页面处理的过程,所以没有那么多事件需要处理,不必消耗太多资源,所以性能方面要比ASPX高。一般来说能够用一般处理文件实现的功能,就在一般处理文件中写,但是涉及到WEB窗体内容读取和修改的话,就会放到ASPX.CS中进行处理,一般在项目逻辑处理文件夹新建REMOTEHANDLE(远程处理文件夹),然后把一般处理文件放在这个文件夹。
二 问题产生原因
在WEBFORM中ASPX脚本中使用SESSION,是不用声明直接使用的。
| 1 | public void checkDemo() | 
但是在一般处理程序ASHX中需要先引用对应的命名空间和继承对应SESSION接口,然后在项目中可以通过CONTEXT.SESSION["XX"]大法才能正常调用SESSION,如果是未引用正确的命名空间,会报错SESSION对象未定义,如果是未继承正确的接口,会报错SESSION对象为空,不可用。
| 1 | using System.Web; |