最近开发Ext应用,使用ajax请求数据时,遇到了请求数据以返回,但IE里却无法显示的怪问题。
使用HTTPWatch查看,发现ERROR_INTERNET_CONNECTION_RESET。
使用FireFox和google浏览器都没有问题,网上查找说网站放在IIS上没有问题,试验后证明有效。
但同事开发用机大部分都是XP系统,有部分还是HOME版,因此该问题必须找到原因解决才行。发现POST请求改为GET请求也不会出这个问题。
再进一步的大胆假设,小心求证。
在ProcessRequest最后增加
context.Request.InputStream.ReadByte();
后问题彻底解决
这证明了我之前的假设
情况可能是由于使用文件方式系统的网站,调试运行时使用的是ASP.NET Development Server而非IIS,因此运行机制上与IIS存在不同。
检查代码发现,处理该请求时,只获取了URL上的部分内容,并未对POST内容部分进行获取。
此时可能ASP.NET Development Server并未从IE链接过来的Socket中读取剩余部分,而程序处理完成后服务器端发送结果完成后该Socket链接断掉,而IE认为数据还没有发送完因此报了ERROR_INTERNET_CONNECTION_RESET错误。