3

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

0 回答 0