I have a dotnet framework application which performs POST api requests to a remote server running Apache. It intermittently fails with the error:
The underlying connection was closed: A connection that was expected to be kept alive was closed by the server.
This occurs on the second request to the server when done over a keepalive TLS connection, and so occurs more frequently in production systems under heavy load and less frequently or not at all in development environments.
We have tried:
- Disabling
Expect: 100-Continue
header behaviour (ServicePoint.Expect100Continue = false
) - Enabling TCP keep-alive (
ServicePoint.SetTcpKeepAlive()
)
Disabling HTTP keep-alive appears to work around the issue. (HttpWebRequest.KeepAlive = false
)
Is there a way to solve this without disabling http keep-alive?