c# - Cómo transferir MemoryStream a través de WCF Streaming
wcf-binding (1)
No está proporcionando muchos detalles, sin embargo, estoy casi seguro de que sé cuál es el problema, ya que he visto que eso sucede mucho.
Si escribe algo en un MemoryStream
para devolverlo como resultado de una operación de servicio WCF, debe restablecer manualmente la secuencia a su inicio antes de devolverlo. WCF solo leerá el flujo desde su posición actual , por lo tanto, devolverá un flujo vacío si esa posición no se ha restablecido.
Eso al menos explicaría el problema que estás describiendo. Espero que esto ayude.
Aquí un código de ejemplo:
[OperationContract]
public Stream GetSomeData()
{
var stream = new MemoryStream();
using(var file = File.OpenRead("path"))
{
// write something to the stream:
file.CopyTo(stream);
// here, the MemoryStream is positioned at its end
}
// This is the crucial part:
stream.Position = 0L;
return stream;
}
Estoy planeando pasar MemoryStream a través de WCF Streaming, pero parece que no funciona, pero cuando cambio ligeramente el código para pasar FileStream, está funcionando. De hecho, mi propósito es pasar una gran colección de objetos comerciales (serializable). Estoy usando basicHttpBinding. Su sugerencia sería muy apreciada!
Editado: los síntomas del problema es que la secuencia entrante está vacía. No hay error ni excepción.