¿Es posible usar un MemoryStream con FileStreamResult?

Estoy usando DotNetZip para crear un archivo zip y pasarlo a un FileResult. En la depuración, puedo verificar que MemoryStream contiene un archivo, pero cuando lo ejecuto a través de FileStreamResult, devuelve 0bytes:

public FileResult GetZipFiles(int documentId) {
       var file = fileRepository.Get(documentId);
       var zip = new ZipFile();
       var stream = new MemoryStream();

       var filePath = Path.Combine(UploadsFolder, Path.GetFileName(file.Id));

       zip.AddFile(filePath);
       zip.Save(stream);

       var result = new FileStreamResult(stream, "application/zip") 
                    { FileDownloadName = "hey.zip" };

       return result;
 }

De nuevo, puedo verificar que la secuencia no esté vacía, pero esto siempre devolverá el archivohey.zip como 0bytes. Debo estar usandoMemoryStream mal aquí? OFileStreamResult hace algo que no espero que haga? he usadoFileStreamResult antes, pero no conMemoryStream.