Ho avuto l'impressione che quando hai chiamato Flush()
in un oggetto StreamWriter, esso scrive nello stream sottostante, ma apparentemente questo non è il caso del mio codice.StreamWriter scrittura su MemoryStream
Invece di scrivere sul mio file non scriverà nulla. Qualche idea su dove sto andando male?
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");
}
considerare di mettere il vostro MemoryStream e StreamWriter nell'utilizzo dichiarazioni per una corretta raccolta dei rifiuti. – neontapir
@neontapir Non sono ancora in giro per la pulizia del codice ma lo farò dopo. Cheers – ediblecode
@neontapir, commento sbagliato per questo caso particolare: questo renderà solo il problema più grave/ovvio ... –