Below Struct ist serialisierbar und wenn Server (führt WCF-Webdienst) gibt Objekt von diesem zurück, dann Client kann Daten ordnungsgemäß empfangen.Übergabe 'Stream' an Client löst Fehler
Szenario: Der Server versucht, den Endpunkt zu öffnen und an den Client zu senden, damit der Client eine Datei in ihn schreibt. Ich habe versucht, 'Stream' in struct wie unten hinzuzufügen, aber es ist Fehler wirft.
[Serializable]
public struct TestInfo
{
public string TestStr;
public int TestInt;
public Stream TestStream;
}
Fehler:
An error occurred while receiving the HTTP response.
This could be due to the service endpoint binding not using the HTTP protocol.
This could also be due to an HTTP request context being aborted by the server (possibly due to the service shutting down).
System.Net.WebException: The underlying connection was closed:
An unexpected error occurred on a receive. --->
System.IO.IOException: Unable to read data from the transport connection:
An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host
at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
--- End of inner exception stack trace ---
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.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)
--- End of inner exception stack trace ---
at System.Net.HttpWebRequest.GetResponse()
at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
--- End of inner exception stack trace ---
Jede Idee, wenn ich etwas bin hier fehlt? 'Stream' ist serialisierbar und ich dachte, es wäre in Ordnung Stream zu senden. Wenn 'Stream' nicht der beste Weg ist, dann kann ich es anders versuchen?
Ich habe keine Ahnung, warum Stream ist serialisierbar markiert, aber im wesentlichen nichts von seiner tatsächlichen Implementierungen kann sinnvoll serialisiert werden. Es gibt wirklich keine Möglichkeit, etwas wie den lokalen Dateizugriff ('FileStream') oder die lokale Netzwerkverbindung (' NetworkStream'/'SslStream') auf eine Weise zu serialisieren, die außerhalb der lokalen Box nützlich ist. –