下载文件后指向新页面

当我在下载文件后尝试重定向到新页面时,它不起作用。 我是否必须删除或修改此代码中的任何内容? 调试器无法到达它

byte[] fileData = (byte[])sqlRead[3]; Response.Clear(); Response.AppendHeader("content-disposition", "attachment; filename=" + sqlRead[2]); Response.ContentType = "application/octet-stream"; Response.BinaryWrite(fileData); Response.Flush(); Response.End(); Response.Clear(); Response.Redirect("Questions.aspx"); 

取出

 Response.End(); 

Response.End杀死整个响应,之后什么都不会运行。

End方法使Web服务器停止处理脚本并返回当前结果。 不处理该文件的其余内容。

安德鲁对于Response.End正确停止执行是正确的。 我不认为删除它会有所帮助,因为它只会影响你发送的文件。

你可以用其他技巧获得你想要的效果。 例如,您可以在带有DL链接的页面上使用某些JS来执行客户端重定向。

编辑

我建议你在下载链接中添加一个辅助行为,这样点击它就会下载文件并更改当前页面。 如果单击启动一个在一秒左右进行重定向的计时器,它可能会更好。

我不是ASP人,但你还需要将Redirect调用移到任何将某些内容写入响应主体的调用之上。

尝试在Response.Clear()之后立即调用Redirect() Response.Clear()

重定向URL在HTTP响应的标头中传输,因此在生成主体之后调用它(因此标头已经生成并发送)将呈现无效或错误。

不要使用response.end()/它会突然结束请求处理线程。

您可以尝试删除整个块:

 Response.Flush(); Response.End(); Response.Clear(); 

我认为问题可能是对Flush()的调用导致内容被发送到浏览器,因此添加在调用Redirect()时添加的重定向HTTP标头为时已晚。