¿Cómo devolver el flujo del servicio WCF?
Estoy jugando con protobuf-net y WCF. Aquí está el código que he creado:
public class MobileServiceV2
{
[WebGet(UriTemplate = "/some-data")]
[Description("returns test data")]
public Stream GetSomeData()
{
WebOperationContext.Current.OutgoingResponse.ContentType = "application/x-protobuf";
var ms = new MemoryStream();
ProtoBuf.Serializer.Serialize(ms, new MyResponse { SomeData = "Test data here" });
return ms;
}
}
[DataContract]
public class MyResponse
{
[DataMember(Order = 1)]
public string SomeData { get; set; }
}
Cuando busco en Fiddler, puedo ver el tipo de contenido saliente adecuado y todo se ve bien, pero obtengo una respuesta vacía. IE le pide que descargue el archivo y este archivo está vacío. ¿El serializador no funciona? O simplemente no lo hago bien?
EDITAR:
Agregué el siguiente código al método y sí, se serializa correctamente. Algo malo con la forma en que devuelvo la secuencia de WCF ..
using (var file = File.Create("C:\\test.bin"))
{
Serializer.Serialize(file, new MyResponse { SomeData = "Test data here" });
}