2013-04-03 3 views
1

Я использую C# и ASP.NET MVC 3. В настоящее время я беру большой набор данных с SQL Server, добавляя его в StringBuilder, а затем используя System.Text.ASCIIEncoding для преобразования объекта StringBuilder в массив byte[].Как я могу эффективно передавать большие данные из SQL Server 2008 в веб-браузер?

Затем я отправляю массив byte[] на вид. Однако, объем данных настолько велик, я получаю следующее исключение:

исключения типа «System.OutOfMemoryException» был выброшен

Вот код, который я использую в моем контроллере для преобразования StringBuilder Объект byte[], а затем вернуться к просмотру. Есть ли способ передавать данные прямо из базы данных в клиентский браузер, не загружая их сначала в память на сервере?

System.Text.ASCIIEncoding encoding = new ASCIIEncoding(); 
return File(encoding.GetBytes(csv.ToString()), "text/csv", "Query_Export.csv"); 

ответ

2

Вы можете сделать что-то похожее на следующий код псевдо

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

+0

Awesome! Спасибо за быстрый ответ. Я сделаю это. – TheDude

 Смежные вопросы

  • Нет связанных вопросов^_^