我维护的某个程序的某个httphandler需要作修改了,就是在出错三次后,需要增加图形验证码,图验正确后才继续往后台的服务发送验证信息。因为里面的逻辑比较复杂,所以我就增加了两个变量,一个是是否有图验,另一个是图验是否正确。三分钟就修改完了代码,自测了一把,一切OK,于是提交更新。过一分儿测试组的就传来消息,现在图验只出一次,以后再怎么错,就不再出图验了。
我首先怀疑是不是程序的代码不一致引起的,于是到环境上把DLL取下来,反编译,查看逻辑,一切都是一样的。
最后发现上面的IsReUseable 被置成了true.原来问题是出在这里。当这个属性被置成true后,所有的对象被创建的时候,就会放在一个对象池里,有新的请求的时候,就从池里面去取一个现成的来处理,只有当发现对象池的对象不够用的时候,才会继续创建新的对象。