除了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分钟左右。
答案 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)
这篇文章或相关链接可能会有所帮助: