2010-08-10 33 views
3

我檢查我的asp.net頁面中的會話變量,並重定向到我的默認頁面。爲什麼不在IE中重定向工作?

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,火狐但不是在IE瀏覽器。 「操作中止」異常。

回答

3

嘗試改變

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);將不會終止當前響應。

0

與其他瀏覽器相比,IE在發送標題之後但在頁面終止之前更改DOM更加敏感。

這裏是你的問題:

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

嘗試改用假爲真。

此外,要非常小心你的頁面名稱的外殼。即使Windows允許您避開它,「Default.aspx」和「default.aspx」也不是相同的頁面。

相關問題