Я пишу некоторые данные csv в ответ http. Эти данные выводятся в таблицу данных из базы данных, а затем записываются в контент ответа HTTP с использованием streamwriter. Проблема заключается в том, что файл CSV, загруженный с клиентской стороны, не содержит всех данных. Он всегда пропускает некоторые данные в конце файла. Ниже приведен фрагмент кода:Данные CSV, записанные в http-ответ от таблицы данных, теряются в C#
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());
}
Я пробовал много вещей, но ничего не работало. Может кто-то помочь. Заранее спасибо.
Проверьте статус http. Вы должны получить 200 Done в конце данных. Вы можете обнюхать данные с помощью Fiddler и убедиться, что происходит 200 Done. Общая проблема, которую каждый имеет, - это значение по умолчанию для WebRequest для http 1.1, которое не работает в Net Library. Вам может потребоваться изменить запрос на http 1.0, используя следующую команду: request.ProtocolVersion = HttpVersion.Version10; – jdweng
Каков ваш ответ? Если false, вам нужно добавить Response.Flush() перед вызовом Response.End(). – RamblinRose
Если все данные правильно написаны, проверьте, что если вы открываете Excel в excel, и если у вас слишком много строк, которые excel не может обрабатывать (в зависимости от версии), попробуйте открыть его в блокноте или блокноте ++. – par