Response.WriteFile()之后没有发生副作用

时间:2013-02-07 06:27:02

标签: c# asp.net .net

根据ASP.NET页面,单击按钮时,应执行以下操作:

  1. 从服务器下载文件
  2. 执行清理操作,例如

    • 隐藏按钮
    • 将文字设为标签
    • 显示标签
    • 禁用按钮
  3. 现在下载部分通过以下代码发生:

    Response.Clear();               
    Response.Buffer = true;
    Response.ContentType = "application/pdf";
    Response.AddHeader("Content-Disposition", "attachment; filename="+strFileName+".pdf");
    Response.WriteFile(strBrowserPath); 
    

    剩下的行动(第2点)在之后完成。

    可悲的是,由于使用了Response.Clear()/ Response.WriteFile(),因此没有发生其余的服务器端操作。

    任何替代方案?对此有何修复?

1 个答案:

答案 0 :(得分:2)

从您使用回发操作发送文件的那一刻起,同时您无法发送带有更改的页面(禁用按钮,更改文本等)。对此没有任何修复,因为它没有问题,是它的工作方式。您有一个管道可以发回您的回复。你要求一个http响应,你得到一个http响应,你不能同时拥有更新页面和文件。

现在,另类。首先是你要如何发送文件。我建议使用一个带有download.ashx?Dhwoload=filea.pdf等参数的处理程序,并在回传后在页面上进行更新,然后调用

window.location = "download.ashx?Dhwoload=filea.pdf";

javascript,其他链接为

<a href="download.ashx?Dhwoload=filea.pdf">if the file did not start to download automatically click here</a>

并开始工作。

相对:
What is the best way to download file from server
Error handling when downloading file from ASP.NET Web Handler (.ashx)