【问题标题】:Random Page_Load calls on back button in ASP.NETASP.NET 中的后退按钮上的随机 Page_Load 调用
【发布时间】:2008-10-14 20:44:29
【问题描述】:

我希望有人以前见过这个,因为我一辈子都找不到问题所在。

我正在尝试在应用程序中执行旧的“修复后退按钮”事情,我认为我有一个相当不错的方法,问题是它依赖于应用程序在您回击时不调用 page_load 而是加载页面的缓存版本。

在我大约 60% 的页面上,这正是发生的情况。它加载缓存的版本,一切都很好。在另外 40% 时,当我点击返回按钮 page_load 调用时,强制刷新。作为参考,对 page_load 的调用不在回发中。

更奇怪的是,这只发生在 IE (6 & 7) 中。在 Firefox page_load 中永远不会被调用。

我在这两种类型的页面上都使用了 ASP.NET Ajax 框架。有人见过这样的事情吗?

--更新--

在进行了更多调查后,我发现当我使用搜索从一个页面导航到另一个页面时,应用程序在不同页面上的行为会有所不同。在损坏的页面上,page_load 被调用了两次,搜索被调用了两次,在 fiddler 中变成了 2 个不同的重定向回发,其中第二个没有缓存设置。

在工作页面 page_load 和搜索只发生一次,它会立即重定向。

第二个 Response.Redirect 导致了问题。仍然不确定为什么会这样。

【问题讨论】:

    标签: asp.net ajax asp.net-ajax


    【解决方案1】:

    检查服务器为缓存控制 http 标头返回的内容,然后尝试设置 Response.Cache.SetCacheability()/ 在页面上使用输出缓存页面指令,看看服务器是否说应该缓存页面.

    【讨论】:

    • 刚刚拉下提琴手并检查。对于正在刷新的页面和未将缓存控制设置为私有的页面。
    • 发现了一些有趣的东西。我认为它的搜索导致它。页面在搜索后返回 no-cache,但在正常加载后没有返回。
    【解决方案2】:

    如果您使用的是 ASP.NET AJAX,为什么不使用历史服务器控件对象?

    替换历史记录,返回按钮会跳转到你想要的链接。

    try this

    【讨论】:

    • 我喜欢,但除非我弄错了,否则我必须将它放在应用程序的每个页面或母版页中。我不能把它放在母版页上,因为 scriptmanager 标记在子页上。因此 id 必须更改每个页面,这对于生产中的应用程序来说风险太大。
    猜你喜欢
    • 1970-01-01
    • 2011-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多