1

ファイルをブラウザにストリーミングしているときにエラーが発生しますが、2 回目から n 回目までしか発生しません。初めてうまくいきます。

C:\Users\gfinzer\AppData\Local\Temp\BTnADAkZ.pdf. could not be saved because the source file could not be read

コードは次のとおりです。

protected void Page_Load(object sender, EventArgs e)
{
    //Get the parameters
    string reportName = Utils.ParseStringRequest(Request, "reportName") ?? string.Empty;
    string reportGuid = Session["reportGuid"].ToString();
    string path = Path.Combine(ReportPath(), Utils.GetSessionReportName(reportName, reportGuid));

    using (var fileStream = File.Open(path, FileMode.Open))
    {
        Response.ClearHeaders();
        Response.Clear();
        Response.ContentType = "application/octet-stream";
        Response.AddHeader("Content-Disposition", "attachment; filename=\"" + reportName + "\"");
        Response.AddHeader("Content-Length", fileStream.Length.ToString(CultureInfo.InvariantCulture));
        StreamHelper.CopyStream(fileStream, Response.OutputStream);
        Response.Flush();
    }

}

コピーストリームは次のとおりです。

    public static void CopyStream(Stream input, Stream output)
    {
        byte[] buffer = new byte[32768];
        int read;
        while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
        {
            output.Write(buffer, 0, read);
        }
    }
4

1 に答える 1

1

Response.End()私は間違っているかもしれませんが、後に電話が必要Flushですか?

于 2012-09-11T15:01:29.230 に答える