29

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

MahaSwetha
  • 1,058
  • 1
  • 12
  • 21

7 Answers7

12

This is probably because the Client's time out is greater than the server's time out. Server closes the connection and the client is still waiting for a response or sending the request.

You must set the KeepAlive Property to False so the connection will be closed by itself and re opened for every request. This will avoid the issue of attempting to use a closed connection.

Gonzalo
  • 185
  • 1
  • 12
  • https://stackoverflow.com/questions/65555795/why-do-dotnet-keepalive-http-connections-fail-on-the-second-request-with-a-conn I think this is correct, but by using the ServicePointManager.MaxServicePointIdleTime you can avoid having to turn off keep-alive entirely. – mcdrewski Jan 03 '21 at 23:46
10

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.

Community
  • 1
  • 1
OnoSendai
  • 3,960
  • 2
  • 22
  • 46
2

I had this configured:

ServicePointManager.DefaultConnectionLimit = 100;

Once I removed that, the errors went away.

Helge Klein
  • 8,829
  • 8
  • 51
  • 71
2

I had the same issue when using RestSharp library. I solved by adding these two lines before creating RestClient object:

ServicePointManager.DefaultConnectionLimit = 100;
ServicePointManager.MaxServicePointIdleTime = 5000;
uzrgm
  • 375
  • 3
  • 8
  • I think the ServicePointManager.MaxServicePointIdleTime being set to 5000, coincidentally the *same* default idle timeout as apache uses is probably the real solution here. – mcdrewski Jan 03 '21 at 23:48
1

I had the same problem and setting in the server's config in the serviceBehaviors element

<serviceBehaviors>
    <behavior name="ServiceBehaviour">
        ...
        <dataContractSerializer maxItemsInObjectGraph="6553500"/>
        ...
    </behavior>
</serviceBehaviors>

solved the issue.

Tracing helps a lot in finding the root of these problems: https://msdn.microsoft.com/en-us/library/ms733025(v=vs.110).aspx

DDan
  • 8,068
  • 5
  • 33
  • 52
0

We had a loop in our object graph that we were returning. I know this probably isn't your problem but I'm adding it here in case anyone else has the same problem. We had IncludeExceptionDetailInFaults enabled but weren't getting the error in any client (our application or the WCF Test Client). Luckily it showed up in server logs so we were able to find it that way.

We had parent -> child and child -> parent for two-way navigation, we had to break that link and instead have parent -> child, and the child had an id to lookup the parent, then the error went away.

Hope this helps someone!

matao
  • 636
  • 3
  • 14
  • 22
0

In my case, the issue is in the file length. Please do check the allowed file size on your server. In your script just do check this part :

dataStream.Write(filesBytesArray, 0, filesBytesArray.Length);
dataStream.Close();

And if you dont know, just limit the file uploaded size in your frontend section ie. HTML <input type="file"> upload element, this is good reference for limiting file size and other filter.

Hanny Setiawan
  • 501
  • 4
  • 14