下载文件后指向新页面
当我在下载文件后尝试重定向到新页面时,它不起作用。 我是否必须删除或修改此代码中的任何内容? 调试器无法到达它
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标头为时已晚。