Подтвердить что ты не робот

ASP.NET MVC FileStreamResult не работает по назначению

У меня есть следующий код, который я удалил из каких-либо несущественных строк, чтобы оставить экземпляр с минимальным воспроизведением. Я ожидаю, что он вернет изображение, но это не так. Насколько я вижу, он возвращает пустой файл:

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");
}

Вы можете определить, что не так с этим кодом? В отладчике я вижу, что поток растет в размере, поэтому кажется, что он получает данные, хотя я не смог проверить правильные данные. Я не знаю, как отлаживать сам FileStreamResult.

4b9b3361

Ответ 1

Вам нужно вставить

stream.Seek(0, SeekOrigin.Begin);

после вызова

Image.Save()

Это перемотает поток в начало сохраненного изображения. В противном случае поток будет располагаться в конце потока и ничего не будет отправлено в приемник.

Ответ 2

Попробуйте перемотать MemoryStream. "Курсор" остается в конце файла, и читать нечего, пока вы не перемодете поток в начало.

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