【问题标题】:I am getting exception "Cannot redirect after HTTP headers have been sent" when redirecting to another page重定向到另一个页面时出现异常“发送 HTTP 标头后无法重定向”
【发布时间】:2011-08-04 13:01:34
【问题描述】:

我遇到了异常

"Cannot redirect after HTTP headers have been sent." 

在做Response.Redirect("Home.aspx")时。

我该如何解决这个问题? 我尝试在重定向之前给Response.Flush()

【问题讨论】:

  • 复制到此处找到的问题和解决方案:stackoverflow.com/questions/159523/…
  • 我尝试了上述线程的解决方案。我无法解决这个问题......我的胎面标题可能重复,但导致的问题可能是其他问题......
  • 我有一个从基页继承的页面,该页面检查用户是否有权访问该页面。如果用户具有权限,则将重定向到请求的页面,如果没有将用户重定向到访问被拒绝的页面。此检查发生在 BasePage 的 OnInt 方法上。
  • 只是一个想法,这可能与调用的层次结构有关 - 您是否尝试将 OnInit 更改为 OnLoad?

标签: asp.net


【解决方案1】:

问题是重定向之前的Response.Flush()。使用 HTTP,您将获得 一个一个 请求的响应。您的浏览器仅请求该页面一次,我怀疑您尝试响应两次:

Response.Flush(); //First Response
Response.Redirect("Home.aspx"); //Second Response

因此,将其删除Response.Flush() 将解决您的问题。

【讨论】:

  • 由于这个错误,我添加了 Response.Flush(),即使我删除了我也得到了同样的错误。
  • 那么你可能在某个地方得到了另一个响应,查找或发布一些代码
【解决方案2】:

就我而言,问题的原因是在滚动网格视图中加载数据需要很长时间。在 gridview 数据未完全加载之前,但我按下了重定向按钮。

尝试解决的问题可能是:

+减少你的数据获取

+在加载完成之前阻止按下重定向按钮

【讨论】:

    【解决方案3】:

    我只是以一种不同的方式遇到了这个问题。我有两个 Response.Redirect 调用,它们没有包含在独立的代码分支中。在 Chrome 中运行良好,但 IE 不喜欢它。这是一个简单的解决方法,因为我有两个“if”语句。我只是把第二个变成了这样的“else if”......

    if (QueryString("reset") == "1")
    {
        // User is resetting password
        Response.Redirect("/Account/ResetPassword.aspx");
    }
    else if (DataUtils.IsInt(QueryString("id")))
    {
        // User is authenticating...completing signup
        Response.Redirect("/Account/Activate.aspx");
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-15
      • 2017-03-24
      • 2015-04-24
      • 2011-04-24
      相关资源
      最近更新 更多