asp.net-mvc stream filestreamresult

ASP.NET MVC FileStreamResult no funciona como estaba previsto



asp.net-mvc (2)

Tengo el siguiente código que eliminé de todas las líneas no esenciales para dejar el caso reproducible mínimo. Lo que espero es que devuelva la imagen, pero no lo hace. Por lo que puedo ver, devuelve un archivo vacío:

public ActionResult Thumbnail(int id) { var question = GetQuestion(db, id); var image = new Bitmap(question.ImageFullPath); MemoryStream stream = new MemoryStream(); image.Save(stream, ImageFormat.Jpeg); return new FileStreamResult(stream, "image/jpeg"); }

¿Puedes identificar qué está mal con este código? En el depurador puedo ver que la secuencia aumenta de tamaño, por lo que parece que está obteniendo los datos, aunque no he podido verificar que sean los datos correctos. No tengo ni idea de cómo depurar el propio FileStreamResult.


Intenta rebobinar el MemoryStream. El "cursor" se deja al final del archivo y no hay nada que leer hasta que "rebobina" la secuencia hasta el principio.

image.Save( stream, ImageFormat.Jpeg ); stream.Seek( 0, SeekOrigin.Begin ); return new FileStreamResult( stream, "image/jpeg" );


Necesitas insertar

stream.Seek(0, SeekOrigin.Begin);

después de la llamada a

Image.Save()

Esto rebobinará el flujo al principio de la imagen guardada. De lo contrario, el flujo se colocará al final del flujo y no se enviará nada al receptor.