在近一年的努力之后,公司的移动产品终于是千呼万唤始出来:要上线了。为了配合这次上线,偶们.net组的集中用户登录平台也做了相应的修改:根据职位决定用户登录后跳转到不同的业务页面。给移动产品做支持服务,偶也算是大姑娘上轿——头一回。
当然了古人说的好:凡事豫则立。在这个不计成本、不计效率的环境下,研发人员本着没有蛀牙的中心思想,实施文档在一改再改、反复推敲之后,一份连从古代穿越到现在的孔乙己也能看懂的文档总算是准备好了。当然了其中也有些写作能力不好的研发人员写出的文档竟然比文言文还难看懂:几个文件复制替换的操作竟然没写上个5到6页的操作步骤,简直是对孔乙己先生智商的侮辱。
有点儿吐槽了,言归正传。
总之产品是上线了,那就测吧。
中午楼主我刚躺下(办公室的椅子上),测试的妹子就来找我说:产品有问题晒,这普通用户咋登录不上呢,同样是用户这领导级别的用户咋就没问题呢?(心说话:难道你们这些研发人员也是那啥眼看人低?)
偶沉吟了半天(遇事先不及急说话)以锐利(怎么还是锐利,难道想杀死妹子不成?)的眼光对妹子说:嗯……,那这——肯定有问题啊(这不废话吗)。
妹子:我打电话给其它组的人问,都说他们各自负责的模块没问题。
偶心想,那倒是,一遇到问题就说自己的模块有问题,那也太没节操了吧。一个人没了自信那还成。但楼主我可就不一样啊,多多少少也是个曾经信过佛的人,所谓我不入地狱,谁入?(见过脸皮厚的,象楼主这般的也算是极品了......)
好吧,我先想想,找出问题了再去找你吧。偶带着困意并和颜悦色的对妹子说到(够和蔼)。
楼主这一想不要紧,着了~~~~@@@@@。
此处省略十分钟。
一杯咖啡下肚,楼主顿时觉得又是一条好汉。
上文提到,楼主我也是头一次配合移动人员,所以对于ipad下如何作一些调试、跟踪是一窍不通。但要命的是今天移动产品上线,移动的亲们竟然没有一个来加班的.....(跟帮主混的人品味果然不一样?兴许喝咖啡的时候,从不就大蒜吧)。唉,楼主只叹命苦,如果当年如何如何,哪还....又来了,打住打住。
所谓职业不分贵贱,螃蟹不分公母。
所谓劳动人民都是伟大的。
所谓不会做饭的程序员不是好司机,咱要全能啊(阴阳要协调,要全面发展嘛,什么五讲四美,八荣八耻的都要牢记在心)。
虽说咱不是扁鹊,但望闻问切的基本道理还是懂的,在重现了Bug之后,开始找原因吧那就。
先抓包吧(管它有用没用,先来针安痛定)。但问题出现了,这平板上的包怎么个抓法呢?Fiddler?这个居家旅行,杀人灭口的必备良药,貌似抓不到热点上的数据啊(平板用的楼主用笔记本的无线热点)。netsh,WireShark?这些楼主也都是半吊子啊,但这时也只能硬着头皮上了。捣鼓到快下午4点来钟,也没弄出个所以然了,这时楼主别说头上的汗了,就是胸脯上的汗都来不及擦了.....
不过就象武侠小说中的主人公,电话剧中的男猪脚,总有绝处逢生、锋回路转的时候。这不,上文中提到的那个测试妹子,在看到我一筹莫展的情况下,低声(怕折了楼主的面子,想要让别人接受你的意见,保住他的面子可是非常的重要,不愧是前IBM员工)对我说:我在度娘上找到了用Fiddler抓ipad包的方法了,并通过QQ把地址发给你了。
偶心想,妹子啊,你咋才出现呢........,看来偶也要适时的改变下对度娘的看法了。
又是一番折腾,终于抓到包了,分析后发现,在普通用户登录其对应页面后,也就是index.aspx,并没有设置Cookie,以保存当前用户身份的token,所以导致了登录的失败。
问题找着了,楼主大呼一口气,那就改吧。
楼主项目的用户登录验证是在一个HttpModule中的Authenticate事件中实现的。在逐行的检查了代码之后,发现设置Cookie前有些检查文件名的判断,只有aspx和ashx的文件才会被验证。楼主互顿时觉得眼前一亮找到了问题的原因:普通用户登录系统后,走的是www.xxx.com/?token的形式,并没有带上index.aspx,所以就不会设置Cookie,联系实施人员,修正配置,再测。
结果当然涛声依旧了。因为就算是走的www.xxx.com/?token,没有带文件名,但由于默认文档设置的就是index.aspx,所以最后在HttpModule处理时,还是处理的index.aspx。
最后打开index.aspx页面的代码,看看有没有什么特殊设置,发现EnableSessionState是关着的,那难道.net在设置cookie时,还会参照这个开关?死马当活马医吧,开启后,山还是那座山,他大爷还是他大爷。
接着往下查,发现index.aspx页面中第二行配有Outputcache,也就是页面缓存了,那难道是因为缓存的问题?貌似是。
删除缓存配置。
再测。
问题终于解决了。
总结:
遇到问题时,先不管是谁的问题,解决最要紧。
定位问题时,如果一个方法很复杂,也许是因为没有找到简单的方案
要虚心接受各方的建议,管用不管用的试试再说
原理很重要
啰嗦了这么半天,楼主无非是觉得写作对程序员来说还是很重要的,希望有空就写写、练练。
上文中有任何不妥的地方还请各位看官多多指教!
最后谢谢各位看官的宝贵时间。