Я играю с сетью protobuf -и WCF. Вот код, который я создал:
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; }
}
Когда я смотрю в Fiddler -, я вижу правильный тип исходящего контента -, и все выглядит хорошо, но я получаю пустой ответ. IE предлагает загрузить файл, а этот файл пуст. Сериализатор не работает? Или я просто не правильно делаю?
РЕДАКТИРОВАТЬ:
Я добавил следующий код в метод, и да, он правильно сериализуется. Что-то не так с тем, как я возвращаю поток из WCF..
using (var file = File.Create("C:\\test.bin"))
{
Serializer.Serialize(file, new MyResponse { SomeData = "Test data here" });
}