Jak zwrócić strumień z usługi WCF?
Gram z protobuf-net i WCF. Oto kod, który stworzyłem:
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; }
}
Kiedy patrzę na Skrzypka - widzę właściwy typ zawartości wychodzącej i wszystko wygląda dobrze, ale otrzymuję pustą odpowiedź. IE monituje o pobranie pliku, a ten plik jest pusty. Czy serializator nie działa? Albo po prostu nie robię tego dobrze?
EDYTOWAĆ:
Dodałem następujący kod do metody i tak, poprawnie serializuje. Coś nie tak z tym, jak zwracam strumień z WCF ..
using (var file = File.Create("C:\\test.bin"))
{
Serializer.Serialize(file, new MyResponse { SomeData = "Test data here" });
}