我在 ASP.NET (2.0) 中工作,我们有一个页面,用户可以在其中选择和下载一系列文件作为 zip。通过使用 DotNetZip 库(这可能与问题无关,但为了完整性而包含在内),我让这个工作没有撤消困难。
在用户检查他们想要下载的文件之后,页面会进行回发,并且在按钮单击事件处理程序中,我使用以下代码:
Response.Clear();
Response.BufferOutput = false; // false = stream immediately
Response.ContentType = "application/zip";
Response.AddHeader("content-disposition", "filename=FileRequest.zip");
using (ZipFile zip = new ZipFile())
{
zip.AddFile(MapPath("/datafiles/fileToZip.pdf"), "");
zip.Save(Response.OutputStream);
}
Response.Close();
这一切似乎都很好。用户点击按钮,弹出下载窗口,用户下载zip。一切都很好...
...直到他们决定要在页面上做其他事情。表单中的按钮不再响应。例如,如果我再次单击下载按钮,它什么也不做。如果我重新加载页面,我可以重复这个行为......它工作一次,然后什么都不做。
我不明白为什么浏览器不发送新请求。它不是“旋转”或以其他方式忙碌。我认为这可能是一个浏览器问题,但我在 IE 和 Firefox 中都重复了它,所以这似乎是我不理解的东西。奇怪的是,只有表单提交元素似乎没有响应。Javascript 仍然有效,常规链接也是如此。
那么为什么会发生这种情况,我该如何解决呢?