• 这几天遇到的关于IE6/sql2008/win2003的奇怪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的手段更能锻炼人,又印证了今天看到的那篇漫画,也许真的只是少写了一个分号,但问题是你得知道原因所在。

    作者:菩提树下的杨过
    出处:http://yjmyzz.cnblogs.com
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    虚幻4游戏开发_3_创建与继承材质
    Python 之 读取txt文件
    Guava ---- Concurrent并发
    leetCode 67.Add Binary (二进制加法) 解题思路和方法
    poj 1331 Multiply
    二叉树的三叉存储
    FTPClientUtil FTPclient工具
    HDU1018 Big Number n!的位数
    MyBatis參数格式化异常解决方式:MyBatisSystemException:
    Spark:大数据的电花火石!
  • 原文地址:https://www.cnblogs.com/yjmyzz/p/1920665.html
Copyright © 2020-2023  润新知