【发布时间】:2010-08-26 00:10:53
【问题描述】:
我有一个控制器动作声明如下:
[Authorize(Order = 0, Roles = "Requester,Controller,Installer")]
public FileStreamResult ExportJobCards()
此方法的主体构建 CSV 行的集合,并尝试将它们作为文件返回,如下所示:
using (var sw = new StreamWriter(new MemoryStream()))
{
foreach (var line in lines)
{
sw.WriteLine(line);
}
return new FileStreamResult(sw.BaseStream, "text/csv");
}
当我使用以下操作链接请求此操作时...
Html.ActionLink("Export to Excel", "ExportJobCards")
...导出方法正确执行,即上述代码的lines集合中存在所有必需的CSV数据,但我得到一个File Not Found错误呈现为结尾结果。
编辑:
与汤米的观察一致,我将return 移出using,现在我得到一个文件,但该文件是空的。实际生成文件的新代码,ableit 为空,是:
var sw = new StreamWriter(new MemoryStream());
foreach (var line in lines)
{
sw.WriteLine(line);
}
sw.Flush();
return new FileStreamResult(sw.BaseStream, "text/csv");
【问题讨论】:
-
using语句能否在返回完成前处理掉StringWriter?
-
@Tommy,你为什么不发布你的建议作为答案,以便我接受?
-
完成了,很高兴它起作用了(很明显)。我不太确定这是之前将其作为答案发布的问题。
标签: asp.net asp.net-mvc