一 什么是一般处理文件
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; |