Connection that was expected to be kept alive was closed by the server in asp.net

asp.net

When i try to redirect to next page, I get the following error

Note: Even the connection is open and it is fine.

The underlying connection was closed: A connection that was expected to be kept alive was closed by the server.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Net.WebException: The underlying connection was closed: A connection that was expected to be kept alive was closed by the server.

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:

[WebException: The underlying connection was closed: A connection that was expected to be kept alive was closed by the server.]
  Effrtpartsigndone.Page_Load(Object sender, EventArgs e) +8196
  System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
  System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
  System.Web.UI.Control.OnLoad(EventArgs e) +91
  System.Web.UI.Control.LoadRecursive() +74
  System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2207

Version Information: Microsoft .NET Framework Version:4.0.30319;

ASP.NET Version:4.0.30319.272

Best Answer

This MSDN post seems to describe a similar situation. Let us know if it matches your issue:

http://social.msdn.microsoft.com/forums/en-US/netfxnetcom/thread/246ffc07-1cab-44b5-b529-f1135866ebca/

Quote:

[...].Net is sending first Expect 100 in one senddata of socket then send the actual request. Server Responds back with Continue 100. And exactly here .Net is showing message "Underlying connection was close. Connection was closed unexpectedly".

.Net is under impression that it has anyway already sent the data but server sent Connection : Close so it shows error without resending(sic) the request.

So the solution for the above that worked for me was

System.Net.ServicePointManager.Expect100Continue = False

If you want to see the traffic between the interlopers, snoop the HTTP exchange with Wireshark or a similar tool.