工作趣事 之 一般处理程序使用Session(个人亲身经历)
工作一个月了 接到一个任务
制作一个图库的网站 我用了一天的时间 设计了一下网站的各个功能 开始制作
一开始我做的是“登陆”和“注册”
这些感觉不怎么难 我定的目标是用一天的时间完成
注册的时候 有一个验证码 我先简单的介绍一下验证码的原理 我们在网上见到的验证码基本也是这样的原理:
1.根据要求 随机生成一个字符串 可以是只含有数字 也可以含有数字和字母
2.创建一个Session 将生成的字符串放在创建的Session中
3.最后 在后台中 将用户输入的验证码和Session中保存的验证码做比较
如果相同 则说明用户输入的验证码正确 则 可以注册
我用生活中的一个例子来说一下:
您可以把Session当做成一个放东西的容器 将一个物品(随机生成的字符串)放在这个容器中
然后再拿来一个相同的物品(用户输入的验证码) 和容器中的物品比较
原理说明白了 说说我是怎么做的吧
我在一般处理程序里面(.ashx)创建了随机数 ,创建的随机数的图片 并且 创建了Session
但是在.aspx文件中使用Session的时候 犯了一个特别幼稚的错误
先来看一下我在一般处理程序(.ashx)里面创建Session 并给Session赋值
再来看一下在.aspx中使用Session 和 报错信息


授人鱼不如授人以渔 我就来说说为什么一般处理程序(.ashx)要实现这个接口 而 .aspx却不用实现这个接口 直接拿来能用:
在.aspx文件中 微软以及帮我实现了IRequiresSessionState 在Reflector反编译器中 我们可以查看.aspx是怎么实现 IRequiresSessionState 接口的


而在一般处理程序里面(.ashx) 需要我们手动的实现 IRequiresSessionState 接口

呵呵 他是一个标示接口 里面什么都没有
知识标示了 当前页面中使用了Session

这样的低级错误 以后我是再也不会犯了 希望这篇文章 能对大家有所帮助
关于Session的一些原理 大家可以看 ASP.Net原理篇 之 Session
由于个人能力有限 错误的地方还请您指出 以便我改进 万分感谢!!!