在Response.WriteFile()之后未发生附带操作

本文关键字:操作 之后 Response WriteFile | 更新日期: 2023-09-27 17:58:11

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

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

    • 隐藏按钮
    • 将文本设置为标签
    • 显示标签
    • 禁用按钮
    • 等等

现在下载部分通过以下代码进行:

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(),剩下的服务器端操作没有发生。

有其他选择吗?有什么解决办法吗?

在Response.WriteFile()之后未发生附带操作

从您使用post-back操作发送文件的那一刻起,同时您不能发送和更改页面(禁用按钮、更改文本等)。这个问题没有解决办法,因为它的工作方式没有问题。您有一个管道可以发回响应。你要求一个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>

并做好你的工作。

相对:
从服务器下载文件的最佳方式是什么
从ASP.NET Web处理程序(.ashx)下载文件时的错误处理