When getting HttpContext.Current.Request.Params in a C# .NET IIS website – we got this error several times a day:
System.Web.HttpException (0x80004005): An error occurred while communicating with the remote host. The error code is 0x80070001. —> System.Runtime.InteropServices.COMException (0x80070001): Incorrect function. (Exception from HRESULT: 0x80070001) at System.Web.Hosting.IIS7WorkerRequest.RaiseCommunicationError(Int32 result, Boolean throwOnDisconnect) at System.Web.Hosting.IIS7WorkerRequest.ReadEntityCoreSync(Byte[] buffer, Int32 offset, Int32 size) at System.Web.HttpRequest.GetEntireRawContent() at System.Web.HttpRequest.GetMultipartContent() at System.Web.HttpRequest.FillInFormCollection() at System.Web.HttpRequest.EnsureForm() at System.Web.HttpRequest.get_Form() at System.Web.HttpRequest.FillInParamsCollection() at System.Web.HttpRequest.GetParams() |
Turns out that this is related to various offloading done by the Network Card (NIC) – meaning that the NIC is doing stuff on its own which the OS/IIS doesn’t always like. Go to the network card properties – and disable these features:
- Flow Control
- Ipv4 Checksum Offload
- Large Send Offload V2 (IPv4)
- Large Send Offload V2 (IPv6)
- TCP Checksum Offload (IPv4)
- TCP Checksum Offload (IPv6)
- UDP Checksum Offload (IPv4)
- UDP Checksum Offload (IPv6)
Also – make sure you disable Power Management for the NIC.