【问题标题】:ASP: Redirect to headless page and returnASP:重定向到无头页面并返回
【发布时间】: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 对象交互。

【问题讨论】:

    标签: asp.net redirect


    【解决方案1】:

    我可以提出另一种方法吗? 调用者页面 -> 按钮单击 -> POST -> 进程报告 -> GetRequestStream(即“OK/Error”) -> 做某事

    【讨论】:

    • 我已经在看这个了,但是有一个缺点。该页面在重定向之前正在验证电子邮件地址,我必须将其移动到报告页面,这不是它所属的位置。
    【解决方案2】:

    对此的修复相当普通。呈现报告并将其写入文件的方法执行了 Response.ClearContent()。这是我从另一个需要它的应用程序带来的现有代码。一旦我删除了调用,随后的重定向甚至在 IE 中也开始起作用。

    最终的解决方案是这样的:

    调用者页面 -> 按钮点击 -> 验证 -> Server.Transfer(报告页面) -> 处理报告 -> Response.Redirect(调用者页面)

    调用者页面刷新并显示成功消息。

    【讨论】:

      猜你喜欢
      • 2019-08-20
      • 1970-01-01
      • 1970-01-01
      • 2019-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-15
      相关资源
      最近更新 更多