Ich verwende die Klasse HttpClient im .Net 4.5.2-Framework. Ich mache einen PostAsync zu einem Drittanbieter-Webdienst. In 80% der Fälle funktioniert dieser Beitrag, in 20% der Fälle ist unsere Antwort verkürzt. In dieser Situation erhalten wir die folgende Ausnahme:
System.Net.Http.HttpRequestException: Fehler beim Kopieren von Inhalten in ein Stream. --- & gt; System.IO.IOException: Daten können nicht von der Transportverbindung: Eine bestehende Verbindung wurde zwangsweise geschlossen der Remote-Host. --- & gt; System.Net.Sockets.SocketException: Eine vorhandene Verbindung wurde zwangsweise vom Remote-Host bei geschlossen System.Net.Sockets.NetworkStream.BeginRead (Byte [] Puffer, Int32 Offset, Int32-Größe, AsyncCallback-Callback, Objektzustand) --- Ende der inneren Ausnahme Stapelspur --- um System.Net.Sockets.NetworkStream.BeginRead (Byte [] Puffer, Int32 Offset, Int32-Größe, AsyncCallback-Callback, Objektzustand) um System.Net.FixedSizeReader.StartReading () um System.Net.Security._SslStream.StartFrameHeader (Byte [] Puffer, Int32 Offset, Int32-Anzahl, AsyncProtocolRequest asyncRequest) um System.Net.Security._SslStream.StartReading (Byte [] Puffer, Int32 Offset, Int32-Anzahl, AsyncProtocolRequest asyncRequest) um System.Net.Security._SslStream.ProcessRead (Byte [] Puffer, Int32 Offset, Int32-Anzahl, AsyncProtocolRequest asyncRequest) um System.Net.TlsStream.BeginRead (Byte [] Puffer, Int32 Offset, Int32 Größe, AsyncCallback asyncCallback, Objekt asyncState) um System.Net.ConnectStream.BeginReadWithoutValidation (Byte [] Puffer, Int32-Offset, Int32-Größe, AsyncCallback-Callback, Objektstatus) um System.Net.ConnectStream.BeginRead (Byte [] Puffer, Int32 Offset, Int32 Größe, AsyncCallback-Callback, Objektstatus) um System.Net.Http.HttpClientHandler.WebExceptionWrapperStream.BeginRead (Byte [] Puffer, Int32-Offset, Int32-Zählung, AsyncCallback-Callback, Objekt state) bei System.Net.Http.StreamToStreamCopy.StartRead ()
Eine nachfolgende identische Anfrage ist erfolgreich. Es handelt sich nicht um eine Anfrage, die wir wiederholen können, da das Geschäft bereits platziert wurde. Das bringt uns in eine peinliche Situation.
Das ist mein Code:
%Vor%Der Drittanbieterdienst speichert den Datensatz erfolgreich in seiner Datenbank und sieht keine offensichtlichen Ausnahmen an seinem Ende. Sie haben bemerkt, dass die fehlgeschlagenen Anfragen im Allgemeinen länger (etwa 18-30 Sekunden) dauerten, um in die Datenbank zu schreiben als die erfolgreichen Anfragen.
Danke für Ihre Hilfe
Tags und Links asp.net-web-api .net c# asp.net