У меня есть действие контроллера, объявленное следующим образом:
[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")
... метод экспорта выполняется правильно, то есть все необходимые данные CSV присутствуют в коллекции lines
вкод выше, но я получаю File Not Found ошибку, отображаемую в качестве конечного результата.
РЕДАКТИРОВАТЬ: В соответствии с наблюдением Томми, я переместил return
из using
, и теперь я получаю файл, но файл пуст.Новый код, который на самом деле создает файл с возможностью пустого файла:
var sw = new StreamWriter(new MemoryStream());
foreach (var line in lines)
{
sw.WriteLine(line);
}
sw.Flush();
return new FileStreamResult(sw.BaseStream, "text/csv");