Я записываю строку в MemoryStream
, мне нужно вернуть поток в действие контроллера, чтобы я мог отправить его в виде файла для загрузки.
Обычно я заключаю Stream в оператор using, но в этом случае мне нужно его вернуть. Утилизируется ли он после того, как я его верну? Или мне как-то самому распоряжаться?
//inside CsvOutputFormatter
public Stream GetStream(object genericObject)
{
var stream = new MemoryStream();
var writer = new StreamWriter(stream, Encoding.UTF8);
writer.Write(_stringWriter.ToString());
writer.Flush();
stream.Position = 0;
return stream;
}
Действие контроллера, которое возвращает файл:
[HttpGet]
[Route("/Discussion/Export")]
public IActionResult GetDataAsCsv()
{
var forums = _discussionService.GetForums(_userHelper.UserId);
var csvFormatter = new CsvOutputFormatter(new CsvFormatterOptions());
var stream = csvFormatter.GetStream(forums);
return File(stream, "application/octet-stream", "forums.csv");
//is the stream Disposed here automatically?
}