2

在我的应用程序中,我使用表单身份验证和会话。如何确保用户在 6 小时后退出?

在我的 web.config 中,我将会话超时设置为 360 分钟。但在 10 分钟不活动后,我必须再次登录。

我还将表单身份验证超时设置为 360 分钟。我做错了什么?

4

6 回答 6

4

还有一些其他超时值会影响会话超时。我想到的其中之一是工作进程超时(从 IIS 设置)。工作进程的默认超时时间为 20 分钟,因此如果您的站点在 20 分钟内没有任何活动,那么如果您在 InProc 模式下使用会话,工作进程将结束并导致您的会话结束。因此,您可能还需要将 Worker Process 的超时值设置为 360 分钟。

于 2010-01-07T09:40:45.537 回答
3

试试这个设置:

<authentication mode="Forms"> <forms timeout="360" slipExpiration="true"/> </authentication>

还要检查几件事:

  • 如果您的 FormsAuthenticationTicket 是使用较低的 cookie 超时值创建的,则可能会覆盖

  • 如果应用程序池“关闭工作进程”间隔较低,则会更早重置状态

于 2010-01-07T09:42:58.500 回答
1

除了设置会话超时之外,您还可以实现一种机制来保持会话处于活动状态,例如:刷新页面或进行 ajax 调用等。

您可以通过实现最大登录时间来添加此功能,可以检查等

于 2010-01-07T09:41:10.967 回答
1

您需要调整timeoutslipExpiration

<authentication mode="Forms">
    <forms requireSSL="false"
        defaultUrl="Default.aspx"
        loginUrl="Login.aspx"
        path="/"
        slidingExpiration="false"
        timeout="360"
        name=".ASPXFORMSAUTH">
    </forms>
</authentication>
于 2010-01-07T10:00:28.830 回答
1

分步说明 为单个应用程序池配置空闲工作进程页面输出 1.打开 IIS 管理器。

2. 在 Connections 窗格中选择 Applications Pools,在 Application Pool 窗格中选择一个应用程序池,然后在 Actions 窗格中单击 Advanced Settings...。

3.在高级设置对话框中,在进程模型下,可选择将空闲超时值从默认的 20 分钟设置为不同的时间段。

4.单击确定。

于 2015-07-24T10:13:28.670 回答
0

你在使用 InProc 会话吗?(这是 ASP.net AFAIK 上的默认设置)在这种情况下,请检查您的应用程序池是否回收,因为这将终止所有会话。我没有要检查的 IIS,但我相信它已配置为在给定时间内空闲时关闭应用程序池 - 如果这是您的开发服务器,那么您可能已经空闲太久以至于 AppPool 回收并且您的 InProc 会话被杀死了?

我不确定快速实现 stateserver 或 sqlserver 而不是 inproc 有多么容易,但这里是MSDN Page about Session State

于 2010-01-07T10:08:23.500 回答