2

我有一个 MVC3 应用程序,它有大量用于收集用户输入的表单。这些表单依赖于使用 jQuery 的客户端验证。在本地 IIS 7.5 安装下进行测试时,一切正常。在生产环境(也是 IIS 7.5)中,在 3 个表单上,我们遇到了间歇性故障,其中输入视图模型在 POST 操作中具有空值。我添加了一些故障诊断代码并确定在发生这种情况时 Request.Params 集合包含空值或名称值的空字符串。这似乎是相当随机的,但只在特定表格上被注意到。有没有人遇到过这样的事情,你找到解决办法了吗?

生产环境是:用户通过 RDP 连接到 Windows Server 2003 RDP 客户端/IE8。用户在 RDP 会话中运行 IE8 浏览器以连接到 Windows Server 2008 R2/IIS 7.5。

这个问题似乎只发生在浏览器和服务器之间的特定网络连接上。第二个网络没有遇到这些问题。

4

1 回答 1

1

您是否检查了在防火墙级别设置的 MTU 大小。如果这太低,那么这可能会导致问题。我看到了同样的问题,将 MTU 大小减少到 1300 以解决不相关的 VPN 连接问题。一旦防火墙级别的 MTU 大小增加到 1500,问题就解决了。

HTTP POST 请求以多个数据包的形式发送。第一个包含标头,而辅助数据包包含请求正文。有时,当您遇到网络延迟时,主体会丢失。

在 IIS6 中,IIS 管道在收到整个请求之前不会开始处理请求,从而导致超时(如果您使用负载平衡器,则网关超时 504)。在 IIS7 中,您不会得到超时,但会得到空的正文帖子,即使 CONTENT-LENGTH 不为零。

我仍然遇到这个问题,并且即将恢复为 GET 请求。它们是单个数据包,因此速度更快。

于 2013-01-17T09:01:19.990 回答