[英]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.