Laden...

SOAP Datentransfer bricht bei großen Übertragungen ab

Erstellt von SkySurfer vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.330 Views
S
SkySurfer Themenstarter:in
298 Beiträge seit 2006
vor 14 Jahren
SOAP Datentransfer bricht bei großen Übertragungen ab

Hi,

ich habe einen Datentransfer zwischen einem als WindowsService gehosteten Webservice und einem Client, beide verwenden WSE3 und das soap.tcp Protokoll.

Die Kommunikation zwischen beiden funktioniert soweit.
Jedoch bricht die Übertragung ab einer bestimmten SOAP Envelope größe einfach ab und der Client wartet ewig auf die Antwort vom Service und die Anwendung friert ein.
Es greift komischer Weise auch kein Timeout bei der Funktion : Microsoft.Web.Services3.WebServicesClientProtocol.Invoke(<WebMethodName, <ParameterObject>).

Ich hab mir das mal mit Wireshark angeschaut und der TCP Stream zum Client reißt einfach mitten im Envelope ab.

Ich hab leider keine Einstellungen bezüglich irgendwelcher Transfergrößen oder deren Dauer gefunden.

Hat jemand eine Idee woran das liegen könnte?

Gruß SkySurfer

Es gibt 11 Arten von Menschen:

  • Die, die binär verstehen
  • Die, die es nicht tun
  • Die, die Witze darüber machen
S
SkySurfer Themenstarter:in
298 Beiträge seit 2006
vor 14 Jahren

Hab das ganze jetzt mal auf SoapMethod und SoapClient umgebaut und bekomme jetzt zumindest ein Timeout und das Logging auf der Serviceseite liefert eine Fehlermeldung:


            <faultcode>soap:Server</faultcode>
            <faultstring>System.Web.Services.Protocols.SoapHeaderException: Server unavailable, please try later ---&gt; System.IO.IOException: WSE2150: Write Failure. ---&gt; System.Net.Sockets.SocketException: Eine vorhandene Verbindung wurde vom Remotehost geschlossen
   bei System.Net.Sockets.Socket.EndSend(IAsyncResult asyncResult)
   bei Microsoft.Web.Services3.Messaging.SoapTcpNetworkStream.EndWrite(IAsyncResult asyncResult)
   --- Ende der internen Ausnahmestapelüberwachung ---
   bei Microsoft.Web.Services3.Messaging.SoapTcpNetworkStream.EndWrite(IAsyncResult asyncResult)
   bei Microsoft.Web.Services3.Messaging.SoapTcpNetworkStream.Write(Byte[] buffer, Int32 offset, Int32 count)
   bei System.IO.Stream.WriteByte(Byte value)
   bei Microsoft.Web.Services3.Messaging.Framing.FramingRecord.WritePadding(Stream stream, Int32 bytesWritten)
   bei Microsoft.Web.Services3.Messaging.Framing.FramingRecord.WriteChunkedPayload(Boolean endOfRecord, Boolean endOfMessage, Byte[] bytes, Int32 offset, Int32 count)
   bei Microsoft.Web.Services3.Messaging.Framing.FramingRecord.WriteChunkedPayload(Boolean endOfRecord, Boolean endOfMessage)
   bei Microsoft.Web.Services3.Messaging.Framing.FramingRecord.Close(Boolean endOfMessage)
   bei Microsoft.Web.Services3.Messaging.Framing.FramingStream.Close()
   bei Microsoft.Web.Services3.Mime.MimeWriter.Close()
   bei Microsoft.Web.Services3.Mime.XopPackageWriter.WriteAnyExtractedContent()
   bei Microsoft.Web.Services3.Mime.XopPackageWriter.WriteFullEndElement()
   bei System.Xml.XmlElement.WriteTo(XmlWriter w)
   bei System.Xml.XmlDocument.Save(XmlWriter w)
   bei Microsoft.Web.Services3.Mime.XopDocument.SaveToXopPackage(Stream stream, String infosetContentType, String boundary, String startId)
   bei Microsoft.Web.Services3.Messaging.SoapMtomFormatter.SerializeMessage(Stream stream, SoapEnvelope envelope, String mimeBoundary, String startId)
   bei Microsoft.Web.Services3.Messaging.SoapMtomFormatter.Microsoft.Web.Services3.Messaging.ISoapFormatter.Serialize(SoapEnvelope envelope, Stream stream)
   bei Microsoft.Web.Services3.Messaging.SoapMtomFormatterWithFraming.Microsoft.Web.Services3.Messaging.ISoapFormatter.Serialize(SoapEnvelope envelope, Stream stream)
   bei Microsoft.Web.Services3.Messaging.SoapTcpConnection.SerializeMessage(SoapEnvelope envelope)
   bei Microsoft.Web.Services3.Messaging.SoapTcpTransport.Send(SoapEnvelope envelope, EndpointReference destination)
   bei Microsoft.Web.Services3.Messaging.SoapTcpOutputChannel.Send(SoapEnvelope message)
   bei Microsoft.Web.Services3.Messaging.SoapReceiver.DispatchMessage(SoapEnvelope message)
   bei Microsoft.Web.Services3.Messaging.SoapReceiver.ProcessMessage(SoapEnvelope message)
   --- Ende der internen Ausnahmestapelüberwachung ---</faultstring>
            <faultactor>soap.tcp://chimera/SyncService</faultactor>
          </soap:Fault>

Google erzählt mir dazu leider gar nichts. Reflector bringt mich zu der Einsicht, dass der Socket unerwartet geschlossen wurde.

Die Protokollierung des Clients zeigt garkein Fehler.

Hat jemand ne Idee was man noch versuchen könnte bzw. woran es liegen kann?

Es gibt 11 Arten von Menschen:

  • Die, die binär verstehen
  • Die, die es nicht tun
  • Die, die Witze darüber machen
S
SkySurfer Themenstarter:in
298 Beiträge seit 2006
vor 14 Jahren

WSE hat ab Version 2.0 ein integrierten Schutz vor DoS Attacken..
Blöd wenn er den eigenen Datentransfer auch als DoS erkennt aber die Exception nicht nach außen weiter gibt...

mit dem app.config Eintrag


<maxMessageLength value="1024" /> 

lässt sich die zugelassene Datenmenge angeben. Mit -1 wird der DoS Schutz deaktiviert.

Es gibt 11 Arten von Menschen:

  • Die, die binär verstehen
  • Die, die es nicht tun
  • Die, die Witze darüber machen