本主题与此处的问题有关:
如何使用 C# WCF RESTful(即 Web)服务发送 CSV 文件?
通过使用http://blogs.msdn.com/b/carlosfigueira/archive/2008/04/17/wcf-raw-programming-model-web.aspx中讨论的方法,我能够发送一个非常小的数据集,它解释了如何利用“RAW”编程模型来发送响应——我正在使用 MemoryStream 类。
public Stream ReturnCSVSample()
{
string csv = "Hello, World\nGoodBye, For, Now\n";
byte[] csvBytes = Encoding.UTF8.GetBytes(csv);
WebOperationContext.Current.OutgoingResponse.ContentType = "text/csv";
return new MemoryStream(csvBytes);
}
这工作正常。然而,实际上,我从一个两列宽的 SQL 数据库表中检索大约 144,000 条记录,并使用字符串连接将其格式化为 CSV。然后,我获取这个字符串,将其编码为字节数组并将其作为 MemoryStream 对象返回。我让服务运行了 20 多分钟,但仍然没有完成!我已经确定瓶颈是字符串连接。为什么?因为我执行了检索这 144,000 条记录并将其存储到我创建的类的操作,最多需要几分钟才能完成。
要么是一个大的字符串效率低下,要么有更好的方法来对我指定的记录数量执行字符串连接。
如何通过具有大型数据集的 Web 服务发送 CSV 流?
谢谢你。