经过四天的奋战,终于解决了“百年一遇”奇怪问题!下面分享一下。
问题详情:
见百年一遇的奇怪问题:当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。
感言:
如果把解决问题当作一种乐趣,程序人生将其乐无穷。