C# 将字符串转换为流

C# 将字符串转换为流,c#,asp.net,string,stream,C#,Asp.net,String,Stream,我试图使用Controller.file方法返回一个大的.csv文件作为操作结果,它要求我使用byte[]或流 当使用GetBytes方法时,我得到一个OutOfMemoryException 有没有办法做到这一点,而不试图把所有的记忆在同一时间 这是我目前使用的回报: string csv = data.ToCsv(); return File(Encoding.UTF8.GetBytes(csv), "text/csv", "ClusterFMCacheExport.csv"); 已经有一

我试图使用Controller.file方法返回一个大的.csv文件作为操作结果,它要求我使用
byte[]
或流

当使用
GetBytes
方法时,我得到一个
OutOfMemoryException

有没有办法做到这一点,而不试图把所有的记忆在同一时间

这是我目前使用的回报:

string csv = data.ToCsv();
return File(Encoding.UTF8.GetBytes(csv), "text/csv", "ClusterFMCacheExport.csv");

已经有一段时间没有使用ASP.NET了,但不应该这样做(假设文件已经在磁盘上):

你试过这个吗

using(MemoryStream stream = new MemoryStream())
using(StreamWriter writer = new StreamWriter(stream))
{
    writer.Write(s);
    writer.Flush();
    stream.Position = 0;
    return File(stream, "text/csv", "ClusterFMCacheExport.csv");
}
如果你的数据真的那么大,这可能没有帮助。如果生成非常大的csv文件,我建议您重新编写
ToCsv()
生成
,而不是
字符串
不会:

Response.AddHeader("content-disposition", "attachment;filename=file.csv");
return Content(csv, "application/csv");

避免转换?不过,它可能只是把它踢了出去,只会让OOME在其他地方重新出现。

在这里显示您的代码。。人们看不懂你的心思..“一个大的.csv文件”在磁盘上?我正在构建字符串,然后尝试将其作为csv文件返回。你不需要类似文件的东西吗?OpenRead(文件)或new StreamReader(文件)你确定它没有在
ToCSV()上得到
OutOfMemoryException
?将字符串读入MemoryStream@user2081737老实说,我没想到会这样。我想你必须重写
ToCsv
。很高兴能帮上忙。我想我还是会的。还是花了很长时间。
Response.AddHeader("content-disposition", "attachment;filename=file.csv");
return Content(csv, "application/csv");