-1

これが私のコードの一部です:

if (objTbl.Rows.Count > 0)
{
    string attachment = "attachment; filename=Call-Details-Report-" + startDate.SelectedDate.Value.ToString("MM-dd-yyyy") + ".csv";
    Response.Clear();
    Response.ClearHeaders();
    Response.ClearContent();
    Response.AddHeader("content-disposition", attachment);
    Response.ContentType = "text/csv";
    Response.AddHeader("Pragma", "public");

    bool commaRequired = false;
    if (this.chkNET_NETWORKID.Checked)
    {
        Response.Write("Network ID");
        commaRequired = true;
    }
    if (this.chkNET_NETWORKNAME.Checked)
    {
        if (commaRequired)
        {
            Response.Write(",");
        }
        Response.Write("Network");
        commaRequired = true;
    }
}

上記のコードでは、 objTblが私のデータテーブルです。データ テーブルからデータを読み取り、それを応答に書き込み、ダウンロード用のファイルを取得します。しかし、巨大なファイルをダウンロードしようとするとエラーが発生します。

プログラムの実行中にメモリが不足しています。私はそれを聞いたresponse.transmit。この問題を解決できますが、どのように?

4

1 に答える 1

1

TransmitFile 指定されたファイルをメモリにバッファリングせずに、HTTP 応答出力ストリームに直接書き込みます。

このような :

        context.Response.Clear();
        context.Response.ContentType = "application/octet-stream";
        context.Response.AddHeader("content-disposition", "attachment; filename=ym.jpg");
        context.Response.TransmitFile(context.Server.MapPath(@"~/ym.jpg"));
        context.Response.End();
于 2012-04-16T13:23:31.183 に答える