簡體   English   中英

WCF和流式傳輸大數據

[英]WCF and streaming large data

我正在使用wcf(演出)中的大數據。 我需要將其返回給客戶端,並且先前的代碼編寫了一個內存流,然后將其作為流數據協定的屬性返回給客戶端。

問題在於數據已經增長,並且內存流現在使用所有可用內存,並最終在所有數據寫入流之前失敗。

是否可以按需將數據寫入流,因此服務器正在寫入客戶端請求的數據?

這是我們的代碼;

internal  StreamedFileResponse CreateStream()
{
    var stream = new MemoryStream();

    using (var writer = new CsvWriter(stream, Encoding.UTF8))
    {
        writer.Write(rowFactory.CreateHeader());

        foreach (var source in sources)
        {
            var row = rowFactory.Create(source);
            if (row != null)
            {
                writer.Write(row);
            }
        }
    }

    stream.Seek(0, SeekOrigin.Begin);

    return new StreamedFileResponse { Data = stream, Length = stream.Length };
}

[MessageContract(WrapperNamespace = "http://www.contoso.com/services/contract/reports/streamed")]
public class StreamedFileResponse : IDisposable
{
    [MessageBodyMember]
    public Stream Data { get; set; }

    [MessageHeader(MustUnderstand = true)]
    public long Length { get; set; }

    public void Dispose()
    {
        Data.Dispose();
    }       
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM