1

我有这样的 Page_load 方法:

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

        return;
        }
     // some code here
}

Response.Redirect(Request.Url.AbsoluteUri)在方法的末尾使用了防止页面刷新导致的重新发布操作。当我从运行良好的源代码(调试或运行模式)运行我的应用程序时,但是当我发布应用程序(即使在同一台机器上)时,页面数据(加载到 LoadContent)不会在更新的页面上更新(而是重新发布动作被阻止)。

拜托,谁能告诉我为什么会这样?

添加:

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();
    }

添加:

使用 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);
}
4

2 回答 2

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();

但是更好的解决方案是在进行重定向时在 url 的末尾添加一个随机数,或者甚至更好地从您插入的数据中添加新的 id,例如:

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

这样页面将被强制再次读取,并且您仍然具有缓存功能。

于 2013-06-19T09:15:30.090 回答
0

您的页面很可能已被缓存。尝试按 shift-f5 来检查内容。您可以使所有重定向 url 唯一,以防止浏览器显示缓存页面。或者禁用特定页面的缓存。

于 2013-06-19T08:58:49.357 回答