2

I have an MVC3 application that has a large number of forms for collecting user input. The forms rely on client side validation using jQuery. Everything works correctly when testing under a local IIS 7.5 installation. In the production environment (also IIS 7.5), on 3 of the forms we are experiencing an intermittent fault where the input view model has null values in the POST action. I added some fault diagnostic code and established that when this is happening the Request.Params collection contains null values or empty strings for the name values. This appears to be fairly random, but has only been noticed on specific forms. Has anyone experienced anything like this, and did you find a solution?

The production environment is: User connects via RDP to Windows Server 2003 RDP client/IE8. User runs IE8 browser in RDP session to connect to Windows Server 2008 R2/IIS 7.5.

It appears that this problem is only occurring on a specific network connection between the browser and server. A second network is not experiencing these problems.

1 Answers1

1

Have you checked the MTU size set at firewall level. If this is too low, then this can cause problems. I have seen the same problem where the MTU size had been reduced to 1300 to resolve an unrelated VPN connection issue. Once the MTU size was increased at firewall level to 1500, the problem was resolved.

The HTTP POST request is sent in multiple packets. The first contains the header, whilst the secondary packets contain the request body. sometimes, when you have network latency, the body gets lost.

In IIS6 the IIS pipeline would not start to process a request until the entire request had been received, causing timeouts (gateway timeouts 504 if you were using a load balancer). In IIS7, you don't get the timeout, but you do get empty bodied posts, even though the CONTENT-LENGTH is not zero.

I am still having this problem, and am about to revert to GET requests instead. They are a single packet and thus are faster.

Rebecca
  • 13,914
  • 10
  • 95
  • 136
  • I am experiencing this problem. Is there a solution beside changing to GET requests? – Gilles Feb 28 '17 at 17:42
  • 1
    @Gilles unless you control the network infrastructure then probably not. We couldn't get the hosting company to resolve the problem on the load balancer, so we reverted to GET requests where it was viable. – Rebecca Mar 07 '17 at 16:26