題記)最是那一低頭的溫柔,像一朵睡蓮花不勝涼風的嬌羞
1)接收
公司的X部門有個APP小項目,APP后台是C sharp的MVC,提供了一個C sharp的web from做管理員操作的后台操作,此項目是一個實習生寫的,也不屬於我這邊,因此我對此了解是透明的,后來實習生沒來了,於是這一堆從Android到wp到IOS到后台的BUG全部丟到我這了。
得說點題外話,現在很多大學生抱怨找不到工作,但是很多找到工作的學生,人品真的不咋的,記得去年,那工作環境是相當的巴士,早9晚6,從不加班,周末從來雙修,按時出去旅游,后來公司一氣招了5個實習生,這些實習生,干了一段時間,招呼不打,直接就不來上班了, HR妹妹打電話問,直接就說不來上班了,然后讓其歸還門禁卡,后來沒有下文了。
對C sharp沒有深入研究過,這次到手一個項目,想自己搞一下,有源碼在手,有MSDN在那放着,還不能征服你個小小的C sharp,何懼之有?於是我卯足了勁,根據BUG列表,一個勁的在MSDN上來回掃,放在其他語言中,這些bug就是一些入門的問題,然對C sharp沒有深入過,也的慢慢來。
1):整個管理員登錄的后台Web系統全部無法實現更新操作
解決:C sharp有個Page_Load,這個方法我覺得很奇葩,因為每次頁面加載會執行這個方法,於是這里顯示了頁面詳情,表單的post提交會再次執行這個方法,然后才提交表單,正因為提交表單的時候,執行了這個方法,input里面的值被數據庫的值給替換了,導致數據被覆蓋,於是看了MSDN里面,微軟的處理方法是判斷是否是第一次調用這個方法:
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { ShowData(); //顯示頁面詳情 } }
沒有想明白在POST之前再次調用這個方法有什么意義。
2)奇葩的數據,因為我看的是后台的MVC代碼,並沒有去生成APP客戶端,APP的后台是MVC模式,客戶端通過HTTP請求,返回JSON,於是從登錄入手熟悉代碼,整個登錄流程功能倒是沒啥問題,就是實現的太扯蛋了,從數據庫一看:
第一個念頭是這玩意兒使用的啥加密方式,瀏覽了3次代碼,沒有發現可疑的加密的地方,登錄驗證是用存儲過程實現,基本就是很簡單的幾句,於是我轉念一想,難道。。。。
很實在的插入一條,我靠,還真是,數據庫沒有加密,這串看着像密文的東西就是明文入庫,現在寫代碼的小朋友,實在是不該啊,好歹MD5一下成不。
3)在給我處理了1 mol的問題之后,活動專題有個地方,無法修改,於是再次卯足勁看問題,發現這個地方是拋了SQLException,異常信息:
e:過程或函數 'PR_Action_UpdateActionByActionID' 需要參數 '@ActionAddress',但未提供該參數。
說的很明確,沒有賦值,再次看代碼:
問題就在這個地方,這里的參數的名稱沒有寫對,也就是給一個數據庫不存在的字段賦值,傳遞給了存儲過程,這報錯也太奇葩了,不報錯該字段不存在,報字段未賦值。
這些因為人不仔細的問題坑死人啊。。
后記)基本耗時一天把整個后台的問題基本處理了,然后丟到線上,客戶那邊是抱怨不已,登錄不進去,無法注冊,速度太慢,速度是因為使用第三方模塊的UI,模塊里加載了很多google的css,加入第三方模塊的人不太熟悉,沒有去掉,導致整個系統到處慢的要命。
PS:總體來說C sharp還是不錯,寫起來有手感,會j2ee再來搞C shrap門檻很低,我就在想,做一個軟件,將java代碼做個大小寫轉換,然后java代碼就可以變成C sharp了。。
有空研究下這個。