MVC3发布的表单字段在托管环境中间歇性地为null

时间:2012-07-17 08:42:26

标签: asp.net-mvc-3 iis-7.5

我有一个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。

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

1 个答案:

答案 0 :(得分:1)

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

HTTP POST请求以多个数据包发送。第一个包含标头,而辅助包包含请求主体。有时候,当你有网络延迟时,身体会迷路。

在IIS6中,IIS管道在收到整个请求之前不会开始处理请求,从而导致超时(如果您使用负载均衡器,则网关超时504)。在IIS7中,您没有获得超时,但即使内容长度不为零,您也会获得空的帖子。

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