Reputation: 1066
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
Upvotes: 30
Views: 130196
Reputation: 564
I know this is an old topic, but it might help someone that I post the solution I found.
In my case I passed a datatable from WCF to an MVC application and got the 'connection that was expected to be kept alive was closed by the server in' error. The solution was to give the datatable a name and that resolved the issue.
Upvotes: 0
Reputation: 184
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.
Upvotes: 12
Reputation: 395
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;
Upvotes: 2
Reputation: 657
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!
Upvotes: 0
Reputation: 501
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.
Upvotes: 0
Reputation: 3970
This MSDN post seems to describe a similar situation. Let us know if it matches your issue:
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.
Upvotes: 10
Reputation: 8286
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
Upvotes: 2
Reputation: 9095
I had this configured:
ServicePointManager.DefaultConnectionLimit = 100;
Once I removed that, the errors went away.
Upvotes: 2