我试图通过实现自定义MessageEncoder并重写ReadMessage方法来显示流式WCF消息的进度。我可以下载数据并报告进展情况,但我有兴趣在此之前了解完整的邮件大小。
在编码器或其他地方可以在实际下载之前查看传入消息的大小吗?我知道HTTP标头中的长度是可用的,但我没有看到访问它们的方法。
这是我到目前为止所做的:
public override Message ReadMessage(Stream stream, int maxSizeOfHeaders, string contentType)
{
MemoryStream content = new MemoryStream();
byte[] buffer = new byte[512];
var bytesRead = 0;
do
{
bytesRead = stream.Read(buffer, 0, buffer.Length);
content.Write(buffer, 0, bytesRead);
// Report progress
this.ReportProgress("Downloading...", bytesRead);
} while (bytesRead > 0);