Ich schreibe einige CSV-Daten in HTTP-Antwort. Diese Daten werden von der Datenbank in eine Datentabelle geladen und dann unter Verwendung von Streamwriter in den HTTP-Response-Inhalt geschrieben. Problem ist, dass CSV-Datei heruntergeladen auf der Clientseite nicht alle Daten enthält. Es fehlen immer einige Daten am Ende der Datei. Unten ist das Code-Schnipsel:CSV-Daten in HTTP-Antwort aus Datentabelle geschrieben ist in C verloren #
System.Web.HttpResponse Response
Response.AddHeader("content-disposition","attachment; filename=Results.csv");
Response.AddHeader("content-type","text/plain");
writeCsvDataStream_ss(new StreamWriter(Response.OutputStream), dt);
Response.End();
private void writeCsvDataStream_ss(StreamWriter Response, DataTable myDT)
{
StringBuilder result = new StringBuilder();
if (myDT.Rows.Count == 0)
{
Response.Write("No Data available for selected ESIID");
Response.Flush();
return;
}
for (int i = 0; i < myDT.Columns.Count; i++)
{ result.Append(myDT.Columns[i].ColumnName);
result.Append(i == myDT.Columns.Count - 1 ? "\n" : ",");
}
foreach (DataRow row in myDT.Rows)
{
for (int i = 0; i < myDT.Columns.Count; i++)
{ result.Append(row[i].ToString());
result.Append(i == myDT.Columns.Count - 1 ? "\n" : ",");
}
}
Response.Write(result.ToString());
}
Ich habe viele Dinge ausprobiert, aber nichts hat funktioniert. Könnte jemand bitte helfen. Vielen Dank im Voraus.
Überprüfen Sie den http-Status. Sie sollten 200 am Ende der Daten fertig bekommen. Sie können die Daten mit Fiddler schnüffeln und überprüfen, ob 200 Done auftritt. Das allgemeine Problem, das jeder hat, ist WebRequest standardmäßig auf http 1.1, die nicht funktioniert in Net Library. Unter Umständen müssen Sie die Anforderung in http 1.0 ändern, indem Sie Folgendes ausführen: request.ProtocolVersion = HttpVersion.Version10; – jdweng
Wie ist Ihr Response.Buffer eingestellt? Wenn false, müssen Sie vor dem Aufruf von Response.End() eine Response.Flush() hinzufügen. – RamblinRose
Wenn alle Daten ordnungsgemäß geschrieben werden, überprüfen Sie, ob Sie Excel in Excel öffnen und wenn Sie zu viele Zeilen haben, die Excel nicht behandeln kann (je nach Version), versuchen Sie, es in Notepad oder Editor zu öffnen ++ – par