Хотя FileResult
закроет поток, честно говоря, мне не нравится зависеть от какой-то внешней вещи, убирающей за мной, и, по крайней мере, на мой взгляд, код выглядит просто неправильно, обновляя MemoryStream
внеusing
блокировать и просто отпускать его, даже не закрывая явно.
Существует перегрузка File
, которая принимает байтовый массив, так что вы можете просто переместить ваш возврат за пределы блока using
.
byte[] bytes;
using (var ms = new MemoryStream())
{
var barcode = new Barcode().Encode(TYPE.CODE128, reference);
barcode.Save(ms, ImageFormat.Jpeg);
bytes = ms.ToArray();
}
return File(bytes, "image/jpeg");
Это немного личное предпочтение, по общему признанию, но для меня это выглядит чище и более "правильно".