如何完全刷新ASP.NET页面以便再次运行Page_Load?

时间:2012-06-20 02:08:45

标签: c# asp.net caching browser

我有一个ASP.NET页面,其中动态设置了iframe src:

<iframe id="specialframe" src="<%= IframeSrc %>"></iframe>

代码隐藏:

internal string IframeSrc { get; set; }

protected void Page_Load(object sender, EventArgs e)
{
    IframeSrc = SpecialService.GetNewUrl();
}

SpecialService是第三方服务,在调用时会返回一次性使用的URL,其类似于:

http://www.specialservice.com/oneTimeUseId=fh8396123lkjufgh49

出于安全考虑,此ID只能在到期前使​​用一次。但是,这会导致问题。

我第一次在浏览器中显示页面时,会正确加载iframe。但是,如果我点击刷新,我会在iframe中收到错误消息,因为它尝试使用相同的一次性使用ID。如果我 Ctrl + F5 刷新以强制清除缓存,它可以正常工作,但我不能告诉我的用户每次都这样做。

我的问题是,是否可以强制浏览器永远不使用缓存,始终从服务器请求新的副本?

1 个答案:

答案 0 :(得分:0)

您需要设置过期并正确缓存您的页面,以便浏览器始终必须从服务器请求页面。

这个问题可能是一个好的开始http://msdn.microsoft.com/en-us/library/y18he7cw.aspx

你需要可缓存性(可能在过去设置过期,也可能是SetMaxAge):

Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.Now.AddMinutes(-30));