我遇到超时问题。
首先,即使webconfig中的时间设置为120分钟,服务器上也会每20分钟发生一次超时。
第二,当超时发生时,它会进入登录页面,这是正确的但是在重新登录时有时会进入默认页面,有时会进入之前的页面。我希望它每次都进入默认页面。就像它应该删除所有会话和cookie,如果这就是问题。
<authentication mode="Forms">
<forms loginUrl="Login.aspx" defaultUrl="~/Default.aspx" name="GUI" slidingExpiration="true" timeout="120" path="/">
</forms>
</authentication>
<authorization>
<deny users="?"/>
<allow users="*"/>
</authorization>
<sessionState mode="InProc" cookieless="false" timeout="120"/>
这就是我的webconfig中的内容。
答案 0 :(得分:5)
这可能与您的具体问题有关,也可能与您无关,但是进程内用户会话将无法在应用程序回收中存在。在IIS中检查您的应用程序回收时间是否足够高。如果应用程序保持活动,您的会话可能确实持续120分钟,但一旦空闲时间过长,您的应用程序将会回收,您的用户会话将失效。
答案 1 :(得分:2)
我的理解是,使用您所描述的设置,ASP.NET不允许对您的站点进行未经身份验证的Web访问。 这意味着当您转到WebForm1.aspx时,您将被重定向到具有此URL的登录页面
/login.aspx?ReturnUrl=%2fWebForm1.aspx
然后在您的登录页面中,您可能会有类似这样的内容
protected void LoginButton_Click(object sender, EventArgs e)
{
if (FormsAuthentication.Authenticate(UsernameTextbox.Text, PasswordTextbox.Text))
FormsAuthentication.RedirectFromLoginPage(UsernameTextbox.Text,false);
else
// Let the user know they didn't authenticate
}
这会重定向回ReturnUrl指定的任何内容。
如果您不希望发生这种情况,请不要这样做。做这样的事情。
protected void LoginButton_Click(object sender, EventArgs e)
{
if (FormsAuthentication.Authenticate(UsernameTextbox.Text, PasswordTextbox.Text))
Response.Redirect("default.aspx");
else
// Let the user know they didn't authenticate
}
答案 2 :(得分:1)
检查以下事项:
答案 3 :(得分:1)
您好 查看iis中的应用程序池,检查高级设置 - >进程模型 - >空闲超时(分钟)。设置高于20分钟。听起来工作进程因为空闲而关闭。通常这种情况发生在测试系统中,因为他们没有获得那么多的命中来阻止空闲超时被踢入。
Cheers Tigger