【问题标题】:Why doesn't this page redirect work in IE?为什么这个页面重定向在 IE 中不起作用?
【发布时间】:2016-09-05 19:29:10
【问题描述】:

我在我的 asp.net 页面中检查会话变量并重定向到我的默认页面。

 if (Session["OrgId"] != null)
   {
       // some logic
   }
 else
   {
             Response.Redirect("../Default.aspx?Sid=1", false);
   }

在我的 default.aspx 页面中,我已经完成了这项工作,

Int64 id = GetId(Request.RawUrl.ToString());
  if (id == 1)
 {
    // I ll show "Session Expired"
 }

public Int64 GetId(string url)
{
    Int64 id = 0;
    if (url.Contains("="))
    {
        if (url.Length > url.Substring(url.LastIndexOf("=")).Length)
        {
            id = Convert.ToInt64(url.Substring(url.LastIndexOf("=") + 1));
        }
    }
    return id;
}

这适用于 googlechrome、firefox 但不适用于 IE。 “操作中止”异常。

【问题讨论】:

    标签: asp.net internet-explorer response.redirect


    【解决方案1】:

    尝试改变

     Response.Redirect("../Default.aspx?Sid=1", false);
    

     Response.Redirect("../Default.aspx?Sid=1"); 
    

    Response.Redirect("../Default.aspx?Sid=1", true);
    

    【讨论】:

      【解决方案2】:

      HttpResponse.Redirect Method

      Redirect(String, Boolean) 将客户端重定向到新 URL。 指定新 URL 以及是否 当前页面的执行应该 终止。

      这意味着Response.Redirect("../Default.aspx?Sid=1", false); 不会终止当前响应。

      【讨论】:

        【解决方案3】:

        IE 比其他浏览器在发送标头之后页面终止之前更改 DOM 更加敏感。

        这是你的问题:

        Response.Redirect("../Default.aspx?Sid=1", false);
        

        尝试将 false 更改为 true。

        另外,请注意页面名称中的大小写。 “Default.aspx”和“default.aspx”实际上不是同一个页面,即使 Windows 让你侥幸逃脱。

        【讨论】:

          猜你喜欢
          • 2014-11-27
          • 2011-08-21
          • 2017-06-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多