zoukankan      html  css  js  c++  java
  • 自己定义的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.
  • 相关阅读:
    NOIP2010提高组乌龟棋 -SilverN
    NOIP2009 提高组T3 机器翻译 解题报告-S.B.S
    controller向layout传值
    解决Yii2中刷新网页时验证码不刷新的问题
    关联表 重命名
    定义action的允许访问方式
    js 拷贝clone
    是否包含指定字符串
    indexOf()定义和用法
    直接借鉴的 ids拼接
  • 原文地址:https://www.cnblogs.com/WuCountry/p/372951.html
Copyright © 2011-2022 走看看