ASP.NET-Stop / Workaround Response.Write()的异步行为

|| 我有一个通过以下方式将PDF发送给用户的过程
Response.BinaryWrite(pdf);
完成之后,我想
Response.Redirect(\"Default.aspx\");
问题是重定向在“ 2”完成之前触发。我知道这一点是因为我没有看到弹出窗口来下载PDF。 如果我删除
Response.Redirect(\"Default.aspx\");
然后,我得到了应该出现的弹出窗口。因此,这里存在一个竞争条件(可能与HTTP无连接有关)。我可以做
Thread.Sleep(5000);
但这是荒谬的。有解决这个问题的好方法吗? 我尝试过AJAX。这也不起作用。由于AJAX和弹出窗口的问题,我必须使用解决方法
window.frames[\"#pdfPopup\"].location.reload();
要显示我的弹出窗口。 然后这段代码永远不会运行...
alert(\'before href\');//no alert ever displays
window.location.href = \"http://www.yahoo.com/\";
这可能是因为我调用了reload()。有任何想法吗? 我迷上了框架的加载,但这仍然行不通!啊。我读到onload不会触发包含activeX控件(包括PDF)的框架。我在SO和多个Google网站上都读过此书。
<iframe id=\"pdfPopup\" style=\"visibility:hidden;height:0px;width:0px;\" onload=\"Redirect();\"></iframe>
onload确实会在页面加载时触发,但在我调用reload并在其中放置PDF时不会触发。所以我撞到了砖墙。有人对此有任何解决方案吗?     
已邀请:
        无需使用
document.href
,而是通过客户端上的
window.open
打开弹出窗口,并传递URL以在那里下载PDF。然后您可以执行重定向
window.open(\"PDFService.aspx?param1=...\");
document.location.href = \"Default.aspx\";
    
        您不能将ѭ11和ѭ12一起使用,因为用户代理将处理重定向的HTTP 302响应并采取相应措施。您应该做的是使用其中之一。一旦响应结束,使用nothing13(只要没有失败,并且您没有手动设置响应代码)将返回HTTP 200及其内容。     

要回复问题请先登录注册