Как я могу эффективно передавать большие данные из SQL Server 2008 в веб-браузер?
Я использую C# и ASP.NET MVC 3. В настоящее время я беру большой набор данных из SQL Server, добавляя их в StringBuilder
, а затем с помощью System.Text.ASCIIEncoding
преобразовать StringBuilder
возражать против byte[]
массив.
Я тогда отправляю byte[]
массив для просмотра. Однако объем данных настолько велик, что я получаю следующее исключение:
Исключение типа 'System.OutOfMemoryException' было сгенерировано
Вот код, который я использую в своем контроллере для преобразования StringBuilder
Возражать byte[]
а затем вернитесь к виду. Есть ли способ передать данные прямо из базы данных в браузер клиента, не загружая их все в память на сервере?
System.Text.ASCIIEncoding encoding = new ASCIIEncoding();
return File(encoding.GetBytes(csv.ToString()), "text/csv", "Query_Export.csv");
1 ответ
Вы можете сделать что-то похожее на следующий псевдокод
while (sqlReader.GetBytes(params))//params is a placeholder for the actual arguments and
//will have a byte array buffer and some counter indexes
{
context.Response.BinaryWrite(buffer);
//somecounter
}
SqlDataReader http://msdn.microsoft.com/en-in/library/system.data.sqlclient.sqldatareader.aspx