为什么会话超时值不起作用?

时间:2011-08-17 14:26:26

标签: asp.net session

我们的应用程序上的安全模型就像这样(我知道很简单):

public bool IsAuthenticated
    {
        get
        {
            if (Session[EnumsAndConstants.Keys.UserId] == null)
            {
                return false;
            }
            else
            {
                return true;
            }
        }
    }

因此,基本上每个“受保护”的页面都有代码:

private void VLSProtectedPage_Init(object sender, EventArgs e)
    {
        if (!IsAuthenticated)
        {
            Response.Redirect("~/Login.aspx");
        }
    }

在我们的网络配置中,我们有一行:

<sessionState mode="SQLServer" sqlConnectionString="Data Source=xx;User Id=xx;Password=xx;" timeout="1" />

然而,1分钟的超时无效。如果我让页面空闲超过1分钟,我仍然会登录。

我从会话数据库中得到的结果也很奇怪:

SessionId Created Expires LockDate LockDateLocal LockCookie Timeout Locked ha4b05pqsnopfwu2wqiohkce2b7731d2 2011-08-17 14:24:07.303 2011-08-17 14:25:17.867 2011-08-17 14:24:17.840 2011-08-17 15:24:17.840 14 1 0

您可以看到创建的数据时间是'2011-08-17 14:24:07.303'但是我只在15:25登录了应用程序。所以看起来.net会话引擎早了1小时。我检查了系统日期时间,这是正确的。

总而言之,即使到期时间提前一小时这也意味着我的应用程序会立即超时,但它不会,它根本不会超时。

有什么想法吗?

0 个答案:

没有答案