【发布时间】:2011-04-27 17:24:33
【问题描述】:
我有一个使用 ReportViewer 控件生成报告的 .aspx 页面。它通常使用 Response.Redirect 从另一个页面调用。
可以通过多种方式使用此页面。只要页面生成响应,例如 MIME 附件,它就会按预期工作。但是,现在我添加了生成报告并将其作为电子邮件附件发送的功能。在这种情况下,页面是无头的,并且不会自行产生响应。相反,我想重定向回调用页面并显示成功消息,如下所示:
调用者页面 -> 按钮点击 -> Response.Redirect(报告页面) -> 处理报告 -> Response.Redirect(调用者页面)
这在 Chrome 中可以正常工作,但在 IE (8) 中则不行。处理报告并发送电子邮件,但第二次重定向不起作用并且浏览器超时。我考虑使用 Server.Transfer 重定向到 ReportViewer 页面。在 IE 中仍然发生超时。
一个请求中不能有 2 个重定向吗?我错过了什么,有没有更好的方法来做到这一点? RFC1945 的引用让我认为这种方法应该没问题:
用户代理永远不应该自动 重定向请求超过 5 次,因为这种重定向通常 表示无限循环。
仅供参考,如果可能的话,我想将所有报表处理逻辑保留在 ReportViewer 页面的代码隐藏中,因为它在报表流回浏览器的正常情况下与 Response 对象交互。
【问题讨论】: