响应机构缺少字符

时间:2015-03-31 16:01:01

标签: iis httpresponse

我发现这个问题发生在使用不同语言和服务器端环境的多台计算机上。它似乎永远是IIS,但它可能更广泛。

在较慢的连接上,响应正文中偶尔会丢失字符。它发生在25%到50%的时间之间,但只在某些页面上,而且只在VPN等慢速连接上发生。刷新通常可以解决问题。

当前的应用程序是带有SQL Server的.NET 4。

示例:

<script>
  document.write('Something');
</script>

正由客户收到

<scrit>
  document.write('Something');
</script>

这会导致标记内的JavaScript打印到页面,而不是执行。

有谁知道为什么会这样?它是否特定于IIS?

1 个答案:

答案 0 :(得分:1)

一般来说,您描述的问题需要在HTTP层或更高层处发生损坏,因为TCP / IP具有校验和,数据包长度,序列号和重新传输以避免此类问题。

离开:

  • 生成数据的应用程序
  • 应用程序和服务器之间的任何中间过滤器
  • 返回数据的HTTP服务器
  • 任何中间HTTP代理,透明或其他
  • 请求数据的HTTP客户端
  • 解释数据的用户代理

您可以根据在服务器边缘和客户端边缘执行的网络捕获进一步诊断。

  • 检查客户端在客户端边缘发出的请求,以验证客户端是否正在请求整个文档,并且不依赖于缓存(没有RangeIf-*标头)。
  • 如果数据离开服务器时是正确的(特别注意Content-Length标头并验证它是200响应),服务器和应用程序都没有错。
  • 如果客户收到的数据正确,您可以排除中间代理。
  • 如果仍有问题,则是用户代理问题

如果我必须在心理上调试这样的问题,我会首先看一下应用程序,以确保它生成正确的文档,然后假设一些interloper正在修改传输中的数据。 (一些用于wan加速,积极缓存,病毒扫描等的HTTP代理......)我可能还会假设某些浏览器插件或广告拦截器在收到响应后正在修改响应。

但是,我不认为它是没有非常有力证据的HTTP服务器。如果在客户端而不是服务器上检测到损坏,我可能会禁用TCP Offload并查找更新的NIC驱动程序。