我试图通过实现自定义 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);