超时和会话超时问题

时间:2010-10-12 14:37:46

标签: c# asp.net session session-timeout

我遇到超时问题。

首先,即使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中的内容。

4 个答案:

答案 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)

检查以下事项:

  • 你的web.config中肯定有120分钟?
  • 这是你唯一的web.config吗?如果不是,它是从正确的地方挑选这些值吗?
  • 使用fiddler(或类似)检查您的浏览器是否仍在请求Cookie(特别是在20分钟后)

答案 3 :(得分:1)

您好  查看iis中的应用程序池,检查高级设置 - >进程模型 - >空闲超时(分钟)。设置高于20分钟。听起来工作进程因为空闲而关闭。通常这种情况发生在测试系统中,因为他们没有获得那么多的命中来阻止空闲超时被踢入。

Cheers Tigger