1

除了没有使用 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 分钟的空闲时间..

4

3 回答 3

2

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

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

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

如果您创建一个超时设置为(例如)60 分钟的特定 FormsAuthenticationTicket,而您的 web.config 设置指示 30 分钟,则从代码中设置的票证将覆盖 web.config 设置。

请注意,ASP.NET 会话和 IIS 会话超时值对您的表单身份验证超时没有影响。

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

还请查看Scott Forsyth 在 weblogs.asp.net 网站上的这篇文章,其中详细介绍了这些问题。

于 2009-02-08T19:47:41.600 回答
1

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

<sessionState timeout="x minutes" />
于 2009-02-08T19:15:16.233 回答
0

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

slipExpiration=NotReally 超时=NotWhatIThinkItIs

于 2009-02-12T22:17:05.957 回答