下载文件后指向新页面

时间:2009-08-07 13:10:29

标签: c# asp.net response.redirect

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

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");

5 个答案:

答案 0 :(得分:3)

取出

Response.End();

Response.End会杀死整个回复,之后不会发生任何事情。

  

End方法导致Web服务器   停止处理脚本和   返回当前结果。该   该文件的剩余内容不是   处理。

答案 1 :(得分:3)

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

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

修改

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

答案 2 :(得分:0)

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

尝试在Redirect()

之后立即调用Response.Clear()

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

您可以尝试删除整个块:

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

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