ASP.NET成员资格 - 用户超出预期的时间

时间:2009-02-08 19:06:23

标签: asp.net asp.net-membership

除了web.config中的超时设置没有被使用之外,还有其他任何推理吗?它可能是30分钟的默认超时,但肯定不到30分钟。

        <authentication mode="Forms">
        <forms timeout="50000000" loginUrl="content/login.aspx"/>
    </authentication>

对于我在Login.aspx页面上的代码:

    protected void LoginButton_Click(object sender, EventArgs e)
{
    if (Membership.ValidateUser(UserName.Text, Password.Text))
    {
        FormsAuthentication.RedirectFromLoginPage(UserName.Text, RememberMe.Checked);
    }
    else
    {
        FailureText.Text = "<br/>Login Failed. Please try again";
    }

}

[编辑]

我相信超时发生在10分钟左右。

3 个答案:

答案 0 :(得分:2)

可以在web.config文件中设置ASP.NET身份验证超时(如您在问题中所示),但是,也可以在代码中设置。您是否有任何C#代码区域明确设置表单超时值?如果是这样,代码中的设置将覆盖web.config设置。

另一种可能性是使用代码生成的表单身份验证cookie。这通常在C#代码中完成,具体如下:

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
                                                            name,
                                                            isPersistent,
                                                            expirationTime);

如果您创建特定的FormsAuthenticationTicket,其超时设置为(例如)60分钟,而您的web.config设置指示30分钟,则代码中的故障单集将覆盖web.config设置。

请注意,ASP.NET会话和IIS会话超时值不应对表单身份验证超时产生影响。

当然,作为最后一种可能性,由于表单身份验证通常基于客户端cookie,因此用户可能正在清除/删除cookie。这当然会导致用户未通过您的网站进行身份验证。

请在weblogs.asp.net网站上查看来自Scott Forsyth的this post,详细说明这些问题。

答案 1 :(得分:1)

可能与会话超时有关,您可以在web.config部分中更改用户会话的超时,在system.web部分添加:

<sessionState timeout="x minutes" />

答案 2 :(得分:0)

这篇文章或相关链接可能会有所帮助:

slidingExpiration=NotReally timeout=NotWhatIThinkItIs