1

私は C# と ASP.NET MVC 3 を使用しています。現在、SQL Server から大量のデータを取得し、それを に追加してから、オブジェクトを配列 に変換するためにStringBuilder使用しています。System.Text.ASCIIEncodingStringBuilderbyte[]

byte[]次に、配列をビューに送信します。ただし、データ量が非常に多いため、次の例外が発生します。

タイプ 'System.OutOfMemoryException' の例外がスローされました

StringBuilderオブジェクトをビューに変換しbyte[]てからビューに戻すためにコントローラーで使用するコードを次に示します。最初にサーバーのメモリにすべてのデータをロードせずに、データベースからクライアント ブラウザに直接データをストリーミングする方法はありますか?

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

1 に答える 1

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

于 2013-04-03T07:29:31.837 に答える