WCF Connected connection was closed: An unexpected error occurred while receiving

I use the RestClient application to communicate with my WCF service. And I get the following exception.

The underlying connection was closed: An unexpected error occurred on a receive. 

This is the C # code that I use

  string q = string.Format(@"xxxxxxxxxxxxxxxxxxxxxxxxxxx"); WebClient client = new WebClient(); string Url = string.Format("{0}/Get?queries={1}", BaseUrl,HttpUtility.UrlEncodeUnicode(q)); client.Headers.Add(HttpRequestHeader.ContentType, "application/json"); var result = client.DownloadString(Url); Console.WriteLine("======================output================================"); Console.WriteLine(result); Console.WriteLine("==========================================="); 

Here is the error message

 System.Net.WebException was caught HResult=-2146233079 Message=The underlying connection was closed: An unexpected error occurred on a receive. Source=System StackTrace: at System.Net.WebClient.DownloadDataInternal(Uri address, WebRequest& request) at System.Net.WebClient.DownloadString(Uri address) at System.Net.WebClient.DownloadString(String address) at RestClient.Program.GetRecordsTest() in C:\Users\Wiemon\Downloads\RestAppClient\RestAppClient\Program.cs:line 118 InnerException: System.IO.IOException HResult=-2146232800 Message=Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. Source=System StackTrace: at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) at System.Net.FixedSizeReader.ReadPacket(Byte[] buffer, Int32 offset, Int32 count) at System.Net.Security._SslStream.StartFrameHeader(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security._SslStream.StartReading(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security._SslStream.ProcessRead(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security._SslStream.Read(Byte[] buffer, Int32 offset, Int32 count) at System.Net.TlsStream.Read(Byte[] buffer, Int32 offset, Int32 size) at System.Net.PooledStream.Read(Byte[] buffer, Int32 offset, Int32 size) at System.Net.Connection.SyncRead(HttpWebRequest request, Boolean userRetrievedStream, Boolean probeRead) InnerException: System.Net.Sockets.SocketException HResult=-2147467259 Message=An existing connection was forcibly closed by the remote host Source=System ErrorCode=10054 NativeErrorCode=10054 StackTrace: at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags) at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) InnerException: 

Here is my binding

 <binding name="wsHttpEndpoint" > <readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="16384" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> <security mode="Transport"> <transport clientCredentialType="Certificate" /> <message clientCredentialType="Certificate" /> </security> </binding> 

And my endpoint behavior, not that I set maxItemsInObjectGraph = "2147483647"

 <behavior name="MyEndpointBehavior"> <dataContractSerializer maxItemsInObjectGraph="2147483647" /> <clientCredentials> <clientCertificate findValue="xxxxxxxxxxxxxxxxxx" x509FindType="FindBySubjectName" storeLocation="LocalMachine" storeName="My" /> <serviceCertificate> <authentication certificateValidationMode="None" revocationMode="NoCheck" /> </serviceCertificate> </clientCredentials> </behavior> 
+7
source share
4 answers

General (general) message.

You must use the Trace Viewer Tool (SvcTraceViewer.exe) to find out about the server error.

+8
source

I had similar errors coming from the depths of my http bindings in WCF.

client β†’ The connected connection was closed: an unexpected error occurred while receiving.

client β†’ Unable to read data from the transport connection: the existing connection was forcibly closed by the remote host.

server (got this with "procdump") -> I / O operation was aborted due to a thread or application request

In the end, after a few hours I came across the HTTP.sys protocol (in C: \ WINDOWS \ System32 \ LogFiles \ HTTPERR), and I found that the self-serving WCF connections were forcibly deleted (intentionally) due to an incomprehensible configuration problem ( minimum byte per second). Unfortunately, it took a few more hours to reconfigure this (you cannot do this via "netsh http add timeout", so you need to do this in the application or in IIS, if not on your own).

+2
source

I do not know if this is the same error, but in my case the exception was in Json, which cannot convert the Date value because it is empty.

DateTime values ​​greater than DateTime.MaxValue or less than DateTime.MinValue when converting to UTC cannot be serialized to JSON.

The trace viewer was very helpful to find the problem.

0
source

Set up WCF tracing in your app.config / web.config and check Error.svclog (it will be created near your binary) for details. In my case, this happened due to the use of the Auto-property initializer (a property without setter) - functions from C # 6.0

 <Message>No set method for property 'FailedCount' in type 'MyProject.Contracts.Data.SyncStatusByVersion'.</Message> <StackTrace> at System.Runtime.Serialization.DataContract.DataContractCriticalHelper.ThrowInvalidDataContractException(String message, Type type) at WriteSyncStatusByVersionToJson(XmlWriterDelegator , Object , XmlObjectSerializerWriteContextComplexJson , ClassDataContract , XmlDictionaryString[] ) ... </StackTrace> 

To configure WCF tracing:

 <system.diagnostics> <sources> <source name="System.ServiceModel" switchValue="Information, ActivityTracing" propagateActivity="true" > <listeners> <add name="xml"/> </listeners> </source> <source name="System.ServiceModel.MessageLogging"> <listeners> <add name="xml"/> </listeners> </source> <source name="myUserTraceSource" switchValue="Information, ActivityTracing"> <listeners> <add name="xml"/> </listeners> </source> </sources> <sharedListeners> <add name="xml" type="System.Diagnostics.XmlWriterTraceListener" initializeData="Error.svclog" /> </sharedListeners> </system.diagnostics> 
0
source