Tenía la impresión de que cuando llamaba al Flush()
en un objeto StreamWriter, escribe en la transmisión subyacente, pero aparentemente este no es el caso con mi código.StreamWriter escribiendo en MemoryStream
En lugar de escribir en mi archivo, simplemente no escribirá nada. ¿Alguna idea de dónde me estoy equivocando?
public FileResult DownloadEntries(int id)
{
Competition competition = dataService.GetCompetition(id);
IQueryable<CompetitionEntry> entries = dataService.GetAllCompetitionEntries().Where(e => e.CompetitionId == competition.CompetitionId);
MemoryStream stream = new MemoryStream();
StreamWriter csvWriter = new StreamWriter(stream, Encoding.UTF8);
csvWriter.WriteLine("First name,Second name,E-mail address,Preferred contact number,UserId\r\n");
foreach (CompetitionEntry entry in entries)
{
csvWriter.WriteLine(String.Format("{0},{1},{2},{3},{4}",
entry.User.FirstName,
entry.User.LastName,
entry.User.Email,
entry.User.PreferredContactNumber,
entry.User.Id));
}
csvWriter.Flush();
return File(stream, "text/plain", "CompetitionEntries.csv");
}
considera poner tu MemoryStream y StreamWriter en el uso de las declaraciones para la recolección de basura adecuado. – neontapir
@neontapir Todavía no estoy listo para la limpieza del código pero lo haré después. Cheers – ediblecode
@neontapir, comentario incorrecto para este caso en particular: esto solo hará que el problema sea más grave/obvio ... –