經過四天的奮戰,終於解決了“百年一遇”奇怪問題!下面分享一下。
問題詳情:
見百年一遇的奇怪問題:當IE遇上.NET Framework 4.5。
問題出現的前提條件:
- 安裝了 .NET Framework 4.5
- 瀏覽器用的是 IE
- ajax 請求由 ASP.NET MVC 處理
- ajax 請求通過 post 發起,並且請求數量比較多
- ajax 請求未處理完成,連接就被中斷(比如 F5 刷新瀏覽器)
問題的影響:
出現問題時,IE 瀏覽器一直處於等待狀態,只有重啟 IE 才能解決問題,對用戶體驗影響非常大。
解決方法:
在 js 代碼中將 ajax 請求方式由 post 改為 get,代碼如下:
$.ajax({ type: 'postget' });
找到解決方法的關鍵過程:
1. 找出問題是由 ajax 請求被中斷引起的,詳見"百年一遇"奇怪問題的進展:找到原因,ajax請求中斷引起。
2. 采用很原始的方法 —— 排除法,一段一段去除代碼,逐步縮小范圍,直到出現 —— 去除這段代碼問題就消失,加上這段代碼問題就出現。
收獲的經驗:
在 ajax 請求中盡量少用 HTTP POST。
感言:
如果把解決問題當作一種樂趣,程序人生將其樂無窮。