System.OutOfMemoryException: 'Exception_WasThrown'
Следуйте моему коду:
[HttpGet]
public ActionResult StreamVideo(int type1, int type2)
{
using (var ctx = new Entities())
{
var result = ctx.Table.Where(x => x.Type1 == type1 && x.Type2 == type2).FirstOrDefault();
byte[] video_byte = result.Video;
return new RangeFileContentResult(video_byte, "video/x-msvideo", "NameFile.mp4", DateTime.Now);
}
}
У меня есть "модальный загрузчик", где он имеет видео-контент. При закрытии модального и открытии снова, это создает проблему:
System.OutOfMemoryException: 'Exception_WasThrown'
Проблема возникает на линии:
var result = ctx.Table.Where(x => x.Type1 == type1 && x.Type2 == type2).FirstOrDefault();
Любое решение?
1 ответ
При получении большого количества varbinary
данные, которые вы должны быть осторожны, чтобы не перегружать кучу больших объектов. Попробуйте вместо этого получить данные в виде потока. EntityCommand
а также SqlCommand
Вы можете получать читатели, и вы можете получить поток от них.
using (connection)
{
SqlCommand command = new SqlCommand(
$"SELECT Video FROM Table where Type1={type1} and Type2={type2};",
connection);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
reader.Read();
var stream = reader.GetStream(0);
... Use the stream here...
}