ASP:重定向到无头页面并返回

时间:2011-04-27 17:24:34

标签: asp.net redirect

我有一个.aspx页面,使用ReportViewer控件生成报告。它通常使用Response.Redirect从另一个页面调用。

此页面可以多种方式使用。只要页面生成响应(例如MIME附件),它就会按预期工作。但是,现在我添加了生成报告并将其作为电子邮件附件发送的功能。在这种情况下,页面是无头的,并不会自己产生响应。相反,我想重定向回调用页面并显示成功消息,如:

来电者页面 - >按钮单击 - > Response.Redirect(报告页面) - >流程报告 - > Response.Redirect(来电者页面)

这适用于Chrome,但不适用于IE(8)。处理报告并发送电子邮件,但第二次重定向不起作用,浏览器超时。我考虑使用Server.Transfer重定向到ReportViewer页面。在IE中仍然出现超时。

一个请求中是否有2个重定向?我错过了什么,有没有更好的方法来做到这一点? 引用RFC1945让我觉得这种方法应该没问题:

  

用户代理永远不应该自动进行      重定向请求超过5次,因为这种重定向通常      表示无限循环。

仅供参考,我希望尽可能将所有报告处理逻辑保留在ReportViewer页面的代码隐藏中,因为它会在报告流回浏览器的正常情况下与Response对象进行交互。

2 个答案:

答案 0 :(得分:0)

我可以提出另一种方法吗? 来电者页面 - >按钮单击 - > POST - >流程报告 - > GetRequestStream(即“OK / Error”) - >做点什么

答案 1 :(得分:0)

对此的修复是相当平凡的。呈现报告并将其写入文件的方法执行了Response.ClearContent()。这是我从需要的不同应用程序中带来的现有代码。一旦我删除了呼叫,后续的重定向就开始在IE中工作了。

最终解决方案如下:

来电者页面 - >按钮单击 - >验证 - > Server.Transfer(报告页面) - >流程报告 - > Response.Redirect(来电者页面)

来电者页面会刷新并显示成功消息。