Como retornar o fluxo do serviço WCF?
Eu estou jogando com protobuf-net e WCF. Aqui está o código que criei:
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; }
}
Quando eu olho no Fiddler - eu posso ver o tipo de conteúdo de saída adequado e tudo parece bom, mas recebo uma resposta vazia. O IE solicita o download do arquivo e este arquivo está vazio. O serializador não está funcionando? Ou eu simplesmente não faço certo?
EDITAR:
Eu adicionei o seguinte código ao método e sim, serializa corretamente. Algo errado com a forma como eu retorno stream do WCF ..
using (var file = File.Create("C:\\test.bin"))
{
Serializer.Serialize(file, new MyResponse { SomeData = "Test data here" });
}