2013-06-19 26 views
1

我Page_Load方法是這樣的:的Response.Redirect(Request.Url.AbsoluteUri)不更新頁面數據

private void Page_Load(object sender, System.EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     // Load Content 
     LoadContent(); 

     return; 
     } 
    // some code here 
} 

而且我用Response.Redirect(Request.Url.AbsoluteUri)在方法結束,以防止套管重職的行動頁面折射。當我從運行良好的源代碼(調試或運行模式)運行我的應用程序時,但是當我發佈應用程序(即使在同一臺計算機上)頁面數據(LoadContent上加載的頁面數據)未在更新的頁面上更新(但是重新發布行動被阻止)。

請問誰能告訴我爲什麼會發生?

ADDED:

LoadContent()方法:

// firstly I get an supervisedGroups list TIBCO iProcess Engine via .NET vendor library, and then: 

    if (supervisedGroups != null) 
    { 
     rptSupervisedGroups.DataSource = supervisedGroups; // rpt.. is Repeater 
     rptSupervisedGroups.DataBind(); 
    } 

ADDED:

方法,其中的Response.Redirect被使用:

private void removeFromGroup(string strGroupName) 
{ 
    using(SqlConnection con = DBHelper.GetNewConnection()) 
    { 
     con.Open(); 
     // here comes query to DB  
    } 

    // Reload Page 
    Response.Redirect(Request.Url.AbsoluteUri); 
} 
+0

你正在更新什麼樣的數據,以及如何?向我們顯示該代碼。你在哪裏調用Response.Redirect? – Alexander

+0

可能與客戶端頁面的緩存有關。如果你按Shift +重新加載他們更新? – Aristos

+0

@Aristos數據更新即使我只是按F5,但沒有Response.Redirect –

回答

1

有兩種方法可以解決這個緩存問題。

之一是發出指示瀏覽器不緩存這個頁面,例如在頁面加載運行:

Response.Cache.SetExpires(DateTime.UtcNow.AddYears(-4)); 
Response.Cache.SetValidUntilExpires(false); 
Response.Cache.SetCacheability(HttpCacheability.NoCache); 
Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches); 
Response.Cache.SetNoStore(); 

但更好的方法是在網址時的末尾添加一個隨機數你做的重定向,甚至更好的,你必須插入的數據,例如添加新的ID:

Response.Redirect("samepage.aspx?newid=" + NewId); 

這樣的頁面將被迫再次readed,你仍然有高速緩存功能。

+0

這很令人沮喪,但它不適合我。我也嘗試添加HTML標籤來禁用頁面兌現 - 完全沒有效果。 –

+0

@mike_grinin使用第二種方法,在重定向時在最後添加一個隨機數。這是肯定的工作。 – Aristos

+0

我發現問題出在我用來獲取數據的供應商庫中。無論如何,非常感謝你,你的解決方案非常出色。 –

0

最有可能您的頁面被緩存。嘗試點擊shift-f5來檢查內容。您可以使所有重定向網址都是唯一的,以防止瀏覽器顯示緩存頁面。或者禁用特定頁面的緩存。

+0

看起來是這樣,但禁用頁面兌現並沒有幫助。我不能理解爲什麼在這種情況下按F5更新內容。 –