Crear y transmitir el archivo zip de imágenes para descargar C #

Estoy utilizando la querida biblioteca de archivos DotNetZip en MVC3 para generar un archivo Zip sobre la marcha que contiene imágenes .png de binarios almacenados en una base de datos. Luego transmito el archivo Zip generado para que el usuario lo descargue. (Valido los datos de imagen antes de guardarlos en la base de datos, para que pueda asumir que todos los datos de imagen son válidos).

public ActionResult PictureExport()
      {
           IEnumerable<UserPicture> userPictures = db.UserPicture.ToList();
           //"db" is a DataContext and UserPicture is the model used for uploaded pictures.
           DateTime today = DateTime.Now;
           string fileName = "attachment;filename=AllUploadedPicturesAsOf:" + today.ToString() + ".zip";
           this.Response.Clear();
           this.Response.ContentType = "application/zip";
           this.Response.AddHeader("Content-Disposition", fileName);

           using (ZipFile zipFile = new ZipFile())
             {
               using (MemoryStream stream = new MemoryStream())
                {
                 foreach (UserPicture userPicture in userPictures)
                  {
                     stream.Seek(0, SeekOrigin.Begin);
                     string pictureName = userPicture.Name+ ".png";
                     using (MemoryStream tempstream = new MemoryStream())
                     {
                        Image userImage = //method that returns Drawing.Image from byte[];
                        userImage.Save(tempstream, ImageFormat.Png);
                        tempstream.Seek(0, SeekOrigin.Begin);
                        stream.Seek(0, SeekOrigin.Begin);
                        tempstream.WriteTo(stream);
                     }

                     zipFile.AddEntry(pictureName, stream);
                 }

                zipFile.Save(Response.OutputStream);
              }

           }

        this.Response.End();
        return RedirectToAction("Home");
      }

Este código funcionará para cargar y exportar UNA (1) imagen. Sin embargo, después de cargar más de una imagen en la base de datos y luego intentar exportarlas todas, el archivo Zip que se genera solo contendrá los datos de la imagen cargada más reciente. Todos los demás NOMBRES de imagen aparecerán en el archivo zip, pero su tamaño de archivo será 0 y simplemente son archivos vacíos.

Supongo que mi problema tiene que ver con los MemoryStreams (o que me estoy perdiendo algo simple), pero, por lo que sé, al revisar el código, las imágenes se extraen de la base de datos y se agregan al archivo zip con éxito ...

Respuestas a la pregunta(1)

Su respuesta a la pregunta