这几天遇到的关于IE6/sql2008/win2003的奇怪bug
2010-12-29 14:49
288 查看
前一阵对公司网站的购物车功能进行了改造,允许不同商家的商品放到同一个购物车,下单时自动按商家来拆分订单。
本地测试时一切正常,IE6/IE7/IE8均没问题。部署到服务器上后试运行几天,有客户反馈说使用购物车下单时,点击提交按钮后,多数时候不能正常生成订单,但也有少部分时候能正常。
于是我又在本地开发环境(win7 + ie8)下测试了一番(包括IETest用IE6.0模拟),然后又用本机浏览器(IE8)测试了线上正式环境的下单,仍然一切正常,当时的第一反应,既然有时候能正常下单,说明代码应该是正确的,于是以为是客户网速太慢,可能导致js未加载成功(因为下单时,有很多表单项的客户端验证是用js处理的)。
但是过了二天,仍然有客户反馈这样,于是才重新思考这个问题,让其它还在用XP+IE6的同事(非开发人员,普通销售/客服人员)帮忙测试下了几个单,果然如此,多数情况下点击提交按钮后,页面只是刷新了一下,并非生成订单。(从刷新的情况来看,数据是提交了,但是貌似后端的cs代码并未正确执行)而且出错的场景很特殊,如果购物车里只有一个商家的产品,一切正常,只有购物车里有多个商家的产品时,才可能出现下单失败。如果用IE7,IE8,ff,chrome等浏览器,没有这个问题。
以前只知道IE6的“坏脾气”会影响css以及js代码,但是从未听说会导致后端cs代码的执行失败。
于是搭建了一个纯IE6的本地开发环境,想再仔细测试下是否会错误重现。
找了台win2003+ie6的机器,装上数据库sql2008(sp1)+vs2010,却意外发现了另一个以前没遇到过的问题:
无意间用其它一台win7开发机器,连接这台win2003上的sql2008时,发现死活连接不上。排除了防火墙,数据库实例未启动,配置管理器里的TCP/IP未启用等各种情况后,依然如此,连接时报10061错误。
百度+Google了一下,找了一篇类似的文章,说是sql2000未打sp4的情况下,连接时就会报10061错误。
于是抱着试试看的心态,把win2003系统所有能打的补丁都打上了,然后再用其它机器连接它上面的sql2008,居然ok了.
这个意外的问题解决了,回到最开始的IE6问题上来,多种尝试失败之后,只能换了一种方式处理:
原来下单页面(暂定为A.aspx),后端是用
if (IsPostBack){
...购物单下单处理
}
即提交到同一个页面,然后用IsPostBack判断是否提交来处理。
我改成点击提交时,用JS设置Form的action,让其提交到B.aspx,然后把A.aspx.cs中的相关代码移到B.aspx.cs中,重新编译部署到服务器,居然就解决了。
后记:解决bug的过程,远比最终如何解决bug的手段更能锻炼人,又印证了今天看到的那篇漫画,也许真的只是少写了一个分号,但问题是你得知道原因所在。
本地测试时一切正常,IE6/IE7/IE8均没问题。部署到服务器上后试运行几天,有客户反馈说使用购物车下单时,点击提交按钮后,多数时候不能正常生成订单,但也有少部分时候能正常。
于是我又在本地开发环境(win7 + ie8)下测试了一番(包括IETest用IE6.0模拟),然后又用本机浏览器(IE8)测试了线上正式环境的下单,仍然一切正常,当时的第一反应,既然有时候能正常下单,说明代码应该是正确的,于是以为是客户网速太慢,可能导致js未加载成功(因为下单时,有很多表单项的客户端验证是用js处理的)。
但是过了二天,仍然有客户反馈这样,于是才重新思考这个问题,让其它还在用XP+IE6的同事(非开发人员,普通销售/客服人员)帮忙测试下了几个单,果然如此,多数情况下点击提交按钮后,页面只是刷新了一下,并非生成订单。(从刷新的情况来看,数据是提交了,但是貌似后端的cs代码并未正确执行)而且出错的场景很特殊,如果购物车里只有一个商家的产品,一切正常,只有购物车里有多个商家的产品时,才可能出现下单失败。如果用IE7,IE8,ff,chrome等浏览器,没有这个问题。
以前只知道IE6的“坏脾气”会影响css以及js代码,但是从未听说会导致后端cs代码的执行失败。
于是搭建了一个纯IE6的本地开发环境,想再仔细测试下是否会错误重现。
找了台win2003+ie6的机器,装上数据库sql2008(sp1)+vs2010,却意外发现了另一个以前没遇到过的问题:
无意间用其它一台win7开发机器,连接这台win2003上的sql2008时,发现死活连接不上。排除了防火墙,数据库实例未启动,配置管理器里的TCP/IP未启用等各种情况后,依然如此,连接时报10061错误。
百度+Google了一下,找了一篇类似的文章,说是sql2000未打sp4的情况下,连接时就会报10061错误。
于是抱着试试看的心态,把win2003系统所有能打的补丁都打上了,然后再用其它机器连接它上面的sql2008,居然ok了.
这个意外的问题解决了,回到最开始的IE6问题上来,多种尝试失败之后,只能换了一种方式处理:
原来下单页面(暂定为A.aspx),后端是用
if (IsPostBack){
...购物单下单处理
}
即提交到同一个页面,然后用IsPostBack判断是否提交来处理。
我改成点击提交时,用JS设置Form的action,让其提交到B.aspx,然后把A.aspx.cs中的相关代码移到B.aspx.cs中,重新编译部署到服务器,居然就解决了。
后记:解决bug的过程,远比最终如何解决bug的手段更能锻炼人,又印证了今天看到的那篇漫画,也许真的只是少写了一个分号,但问题是你得知道原因所在。
相关文章推荐
- 一些改bug遇到的奇怪问题
- 关于vhd做为第二系统在迁移中遇到的奇怪问题
- GWT 常见开发中遇到奇怪bug的解决办法
- 在学习单例模式关于单例数据更新遇到个BUG!(错误)
- 关于使用symfony2开发时遇到的一个诡异的bug
- [ASP.NET缓存BUG]这几天遇到的头痛问题之一,晚上遇到终于解决一劳永逸
- 遇到一个关于ObjectDataSource的奇怪问题
- 最近遇到个关于接口的奇怪的问题
- 关于Android APP在线热修复bug方案的调研(三)(集成Nuwa遇到的坑与解决)
- ARM-MDK4.12关于中断奇怪的BUG
- MySQL创建过程,遇到一个奇怪的bug
- 总结java关于jacob操作word这几天遇到的问题!
- 记录我的bug,关于setVisibility()出现的奇怪问题
- 关于google的gson-2.3.1.jar,发现一个奇怪的bug
- 关于使用easyui dataGrid遇到的小bug问题
- 关于float奇怪的bug
- 【求解】关于移动端word-beak遇到的bug
- ibatis 项目开发中遇到奇怪bug解决集
- 关于BadgeView遇到的一个奇怪的问题和解决办法
- 【BUG】关于rails4 数据迁移遇到的问题