Wu.Country@侠缘

勤学似春起之苗,不见其增,日有所长; 辍学如磨刀之石,不见其损,日所有亏!

导航

自己定义的httpHandlers无法使用Session(ASP.net 1.1)

我不知道这是不是一个小BUG,但我已经没有办法解决这样的问题。
在自己定义的一个httpHandlers里,无法使用Session,每次出现的错误是对象没有引用到实例。经过调试发现HttpContent里根本没有Session对象。
而且郁闷的是,不管是自己的实现了IHttpHander的类,还是从Page继承下来的类,只要在Web.Config里添加了这个Hander,那么在处理这个Hander的时候,都是无法使用Session对象的。
当然,应该不只Session对象不能使用,应该还有其它对象不能用,只是我没有一一验证。

另处一个问题就是关于验证码的问题。如果自己写了一个Page用来生成动态的验证码,但应用程序已经使用了From验证,那么在请求验证码的时候就会要先请求Form验证,从而形成了一种死循环。
形成这种死循环的不仅仅是验证码上与Form验证的问题,同样也存在于页面的验证上。
一般,我们是采用login.aspx做为登录页面,而这时,默认的login.aspx是不须要验证的,否则就会进入死循环,从而使IIS挂起。
形成这样设计错误很容易,例如我们做了一个父类,用于所有的页面。而这个父类是要求验证的,这时,如果login.aspx也从这个父类派生的话,那么这样的死循环就会出现。
再加上验证码及Handler里的一些问题,就已经使得一个B/S结构的应用程序无法在单个Application上部署了。

当然,要解决上面的问题其实也很简单:
1、生成的验证码的页面不用验证就行了。因此,有两种做法,一是另外加一个web.config,从而使它可以在不用验证的情况下生成图片。
2、页面验证的死循环问题,如果login页面也想从要求验证的父类继承,那么唯一可行的办法是重载父类的验证方法,或者在login页面上添加自己的特别认证,例如:给一个公共账号,使它成为可以通过login页面认证的账号。
3、HttpHander里无法访问Session的问题,我目前没有办法解决,可行的方法是放弃使用HttpHander而用Page.

posted on 2006-04-12 10:02  Wu.Country@侠缘  阅读(829)  评论(3编辑  收藏  举报