麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

最近修改的幾個小bug

2019-11-14 16:39:05
字體:
來源:轉載
供稿:網友

      最近修改的幾個 bug,問題不大,查找起來卻幾番周折,匯總起來如下。

      1.詭異電話號碼

      客服郵件反饋,很多用戶服務熱線變成了“0371-45875487”??吹竭@問題的第一反映是可能因為程序某個地方有人不小心寫死了“0371-45875487”,因為服務熱線對應數據庫為一個字段ServiceTelephone,自然的把“0371-45875487”想象成了一個整體,在web解決方案中查找關鍵字“0371-45875487”,沒有結果,數據庫存儲過程查找一遍,也沒有結果,思路中斷了,就先把數據處理了下,原因待查。

      沒幾天,客服又反饋用戶服務熱線好多又變成了“0371-45875487”,再次超找問題,方式和上次一樣,只是搜索關鍵詞變成了“45875487”,沒想到很順利的定位到了問題。出現問題是在個人資料修改頁,截取部分代碼如下:

                   <tr>                        <td  align="right" valign="middle" bgcolor="#F9F9F9">                            服務熱線:</td>                        <td align="left" valign="middle">                            <input name="mendiantelephone1" type="text" id="mendiantelephone1" style="width: 30px;"                                value="0371" size="4" maxlength="5" runat="server" />                            -                            <input name="mendiantelephone2" type="text" id="mendiantelephone2" style="width: 50px;"                                value="45875487" maxlength="8" runat="server" /></td>                    </tr>
資料修改aspx代碼
                if (!string.IsNullOrEmpty(AgentInfo.MendianTelephone))                {                    mendiantelephone1.Value = AgentInfo.MendianTelephone.IndexOf("-") < 0 ? "" : AgentInfo.MendianTelephone.Substring(0, AgentInfo.MendianTelephone.IndexOf("-"));                    mendiantelephone2.Value = AgentInfo.MendianTelephone.IndexOf("-") < 0 ? AgentInfo.MendianTelephone : AgentInfo.MendianTelephone.Substring(AgentInfo.MendianTelephone.IndexOf("-") + 1);                }
資料修改aspx.cs代碼

      如果用戶原來沒有填寫服務熱線,在修改頁這兩個控件的值默認成了“0371”和“45875487”,用戶好不知情的情況下把自己的服務熱線修改錯了。問題修改也很容易,直接把默認值去掉即可。

      這問題告訴我們看似詭異的問題肯定也有其原因的,查找問題時可以縮小搜索關鍵詞。

      2.同名緩存帶來的問題

      問題描述:惠州房源信息,同一樓盤對應的區縣、商圈竟然出現了不同值,如小區三千俊林對應的區縣商圈出現了兩組“惠州 惠陽區”和“惠陽 淡水"。查找原因原來是用到了同名緩存造成的,代碼如下:

        /// <summary>        /// 根據newcode 獲取樓盤字典信息        /// </summary>        public DataTable GetBuildingDicByNewcode(CityBase citySite, long newcode, string PRojtype)        {            DataTable dt = new DataTable();            string oewname = "districtinfo_bus_around" + newcode.ToString() + "_" + projtype + "new";            string cachename = CacheType.housedic + "_" + oewname;            //先取數據緩存            if (this.MemCache.KeyExists(cachename))            {                dt = this.MemCache.Get<DataTable>(cachename);            }            else            {                dt = buildingErrorData.GetBuildingDicByNewcode(citySite, newcode, projtype);                this.MemCache.Set(cachename, dt, DateTime.Now.AddDays(1));            }            return dt;        }

      區縣商圈都是根據樓盤編號獲取的,而樓盤編號在全國都是唯一的,不會重復,這段代碼看似沒什么問題,那問題在哪呢?原來還有一個異地樓盤業務,就是深圳可以調用惠州的樓盤,調用的時候惠州就成了深圳的區縣了,相當于深圳和惠州同一樓盤的區縣商圈屬性不同。

      這問題出現是因為新業務的出現造成了老代碼出現問題,新做業務時方方面面得考慮周全才行。

      3.重復提交問題

      問題描述:在用戶進行放心房操作時,有個計數的字段,每設置一條計數字段+1,每取消一次計算字段-1,但這計數字段卻出現了負數的情況。查找問題,最終出現在了用戶重復提交上,而且從數據上看是有用戶發現了這一漏洞,惡意提交了數據。

        public bool CancelRealHouse(CityBase citySite, HouSEOptEntity optEntity, HouseType htype = HouseType.Sale)        {            //刷新房源并設置標簽            rowCount = houseDAO.UpdateRealHouseStatus(citySite, htype, optEntity.AgentId, optEntity.HouseIds, string.Empty, false);            //調整操作數,只有設置上了放心房標簽才會去調整            if (rowCount > 0)            {                this.houseBizMember.AgentPowerUsingBiz.HouseAction(citySite, htype, HouseAction.UnRealHouse, optEntity.AgentId, rowCount, rowCount, 0);            }        }        public int UpdateRealHouseStatus(CityBase citySite, HouseType houseType, int agentId, List<int> houseIds, string infoCode, bool isSet)        {            int retVal = 0;            int isRealHouse = isSet ? 1 : 0;            DBHelper db = DBHelper.GetDBHelper(BusinessType.AgentHouseWrite, citySite, agentId);            string tableName = GetTableName(citySite, houseType, true);            string refTableName = GetRefreshTableName(citySite, houseType);            string houseIdsStr = string.Join<int>(",", houseIds);            string sql = sql = string.Format("update {0} set isRealHouse = {1} where agentid={2} and status = 1 and isRealHouse != {1} and houseid in ({3});", tableName, isRealHouse, agentId, houseIdsStr);            retVal = db.ExecuteNonQuery(CommandType.Text, sql);            sql = string.Format("update s set s.registdate = getdate(),s.dtimestamp=getdate() from {0} s inner join {1} h with(nolock) on s.houseid = h.houseid where h.agentid={2} and h.[status]=1 and h.houseid in ({3})", refTableName, tableName, agentId, houseIdsStr);            retVal = db.ExecuteNonQuery(CommandType.Text, sql);            return retVal;        }

       問題出現在函數UpdateRealHouseStatus()上,這個函數執行了兩個操作,一個是更新是否放心房,其實這步驟是沒問題的,取消狀態時,如果原本就是取消狀態,這個返回的就是0,但問題出現在第二個操作上,重新給返回值賦值了,致使重復提交了返回值仍然為1,進而造成最終的計數有問題。

       這問題告訴我們在重要操作上,一定要做好重復提交的判斷。這問題發現的隱蔽性在于一個函數做了兩件事,也和函數功能單一化原則相悖,合理的函數代碼也有助于降低這種錯誤的概率。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久国产精品区 | 毛片电影在线看 | 久久久久免费精品国产小说色大师 | 国产免费观看视频 | 亚洲一区二区三区在线看 | 国产精品久久久久久久午夜片 | 成人艳情一二三区 | 老司机一级毛片 | 国产精品久久久久久久久久久天堂 | 蜜桃欧美性大片免费视频 | xxxxhdhdhdhd日本 | 国产精品hd免费观看 | 欧美成人精品h版在线观看 国产一级淫片在线观看 | 毛片一级免费看 | 暴力肉体进入hdxxxx古装 | 蜜桃精品视频在线观看 | 永久av在线免费观看 | 内地av在线 | av在线免费观看不卡 | 久久草在线看 | 免费午夜视频 | 国产免费传媒av片在线 | 国产精品热 | 91香蕉国产亚洲一区二区三区 | 欧美wwwwww | 91 在线免费观看 | 国产在线精品一区二区 | 九九精品视频观看 | 成熟女人特级毛片www免费 | 精品亚洲免费 | 久久精品视频12 | 超碰99在线观看 | 日韩精品中文字幕在线播放 | 三级国产三级在线 | 国产精品成人av片免费看最爱 | 欧美成年人在线视频 | 久久99精品久久久久久秒播放器 | 亚洲一区二区免费视频 | 免费看成年人网站 | 在线看一区二区三区 | 深夜影院a |