会话状态问题

时间:2011-09-30 15:00:22

标签: iphone asp.net

访问页面时,我正在以会话状态存储值。当我单击浏览器时,会话中的值将恢复为其原始值。为什么会这样?我回去的时候没有重置价值。

这种情况发生在iPhone和iPad上 - 所有其他浏览器都不会回滚会话状态值。

提前致谢。

我正在使用这个javascript代码(两个页面中的代码完全相同):

function pageLoad() {
    // Get the current url path
    var url = document.URL;

    PageMethods.IsNavigatingBackward(url, handleCallback);
}

function handleCallback(isBackward) {
    if (isBackward) {
        // Go back to previous page
        history.back();
    }
    else {
        // Set the current url in the session
        var url = document.URL;

        PageMethods.SetCurrentPage(url, getLocation);
    }
}

背后的代码:

[WebMethod]
public static bool IsNavigatingBackward(Uri url)
{
    string currentPath = url.LocalPath;
    string lastPath = (string)HttpContext.Current.Session["LastPage"];
    bool isBackward = false;

    NavigationList table = NavigationList.GetInstance();

    if (table.IsBackwardNavigation(currentPath, lastPath))
    {
        isBackward = true;
    }

    return isBackward;
}

[WebMethod]
public static void SetCurrentPage(Uri url)
{
    HttpContext.Current.Session["LastPage"] = url.LocalPath;
}

3 个答案:

答案 0 :(得分:1)

如果浏览器为:

,您将只看到新的会话状态值
  • 接受cookie
  • 未向您显示缓存的原始页面

如果这两个都是真的并且假设你没有在第二页加载的某处恢复该值,你将看到会话状态。

看来iPhone和iPad不会这样做。

答案 1 :(得分:0)

我认为你误解了正在发生的事情。更有可能的是,页面没有被重新下载(因此会话实际上并没有被设置为任何东西)。它只是使用以前缓存的下载页面。

答案 2 :(得分:0)

您可以尝试使用以下内容:

[WebMethod(EnableSession = true)]