0
我正在使用wcf(gigs)中的大数据。我需要将其返回给客户端,并且之前的代码编写了一个内存流,然后将其作为流式数据协定中的一个属性返回给客户端。WCF和流式传输大数据
问题是数据已经增长,现在内存流使用所有可用内存,并最终在所有数据写入流之前失败。
是否有可能将数据写入流按需,所以服务器正在写它是客户端请求它?
我正在使用wcf(gigs)中的大数据。我需要将其返回给客户端,并且之前的代码编写了一个内存流,然后将其作为流式数据协定中的一个属性返回给客户端。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();
}
}
告诉我们你已经试过了吗 – 2014-10-03 09:38:18