kat*_*tit 5 .net wcf stream protobuf-net
我正在玩protobuf-net和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; }
}
Run Code Online (Sandbox Code Playgroud)
当我看到Fiddler时 - 我可以看到正确的传出内容类型,并且看起来都很好,但我得到了空洞的回应.IE提示下载文件,此文件为空.序列化器无法正常工作吗?或者我只是不做对吗?
编辑:
我在方法中添加了以下代码,是的,它正确序列化.我如何从WCF返回流有什么问题..
using (var file = File.Create("C:\\test.bin"))
{
Serializer.Serialize(file, new MyResponse { SomeData = "Test data here" });
}
Run Code Online (Sandbox Code Playgroud)
Mar*_*ell 10
只需写入MemoryStream,然后回退即可.不要不 Dispose()方法是在这种情况下:
var ms = new MemoryStream();
Serializer.Serialize(ms, obj);
ms.Position = 0;
return ms;
Run Code Online (Sandbox Code Playgroud)
但是,这确实意味着它在内存中缓冲.我可以试着想出一些伏都教来避免这种情况,但这会非常复杂.
| 归档时间: |
|
| 查看次数: |
9376 次 |
| 最近记录: |