如何将大型文本字符串流式传输到客户端响应?

时间:2013-12-30 20:04:18

标签: c# asp.net

我有一个使用C#的ASP.NET应用程序。我需要发送从服务器上动态生成的大文本字符串。如何流式传输响应而不是将所有内容保存在内存中(即在字符串变量中),然后在最后发送所有内容?

所以这里有更多信息。我像这样生成我的文本:

List<Row> results = getRows();

我希望像这样流出来:

foreach(Row curRow in results){
     HttpContext.Current.Response.Write(Row.data1 + " " + Row.data2);
} 

2 个答案:

答案 0 :(得分:0)

您可以使用WebAPI或Handler,HttpContext.Request有一个流。获取该流并阅读它。您可以将其读入memoryStream或将其写入文件流等...

答案 1 :(得分:0)

您可以将Response.Flush()添加到现有代码中以允许此操作。

foreach(Row curRow in results){
    HttpContext.Current.Response.Write(Row.data1 + " " + Row.data2);
    HttpContext.Current.Response.Flush();
}

但请注意,如果您在调用第一个Flush()后尝试更改标题中的任何内容(Cookie或其他任何内容),则会收到异常。