C# C.NET如何使用表单身份验证将会话超时设置为6小时?

C# C.NET如何使用表单身份验证将会话超时设置为6小时?,c#,asp.net,session-timeout,C#,Asp.net,Session Timeout,在我的应用程序中,我使用表单身份验证和会话。如何确保用户在6小时后注销 在我的web.config中,我将会话超时设置为360分钟。但是在10分钟的不活动之后,我不得不再次登录 我还将表单身份验证超时设置为360分钟。我做错了什么?还有其他一些超时值会影响会话超时。我想到的其中一个是从IIS设置的工作进程超时。工作进程的默认超时时间为20分钟,因此,如果站点中有20分钟没有活动,则工作进程将结束,如果您在InProc模式下使用会话,则会导致会话结束。因此,您可能还需要将工作进程的超时值设置为36

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

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


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

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

您可以实现一种机制来保持会话活动,而不是设置会话超时,例如:刷新页面或进行ajax调用等

您可以通过实现可检查的最长登录时间等来增加登录时间。请尝试以下设置:

还有几件事需要检查:

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

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

您需要调整超时和滑动过期时间:


您正在使用InProc会话吗?这是ASP.net AFAIK上的默认设置。在这种情况下,请检查应用程序池是否回收,因为这将终止所有会话。我没有要检查的IIS,但我相信它已配置为在给定时间内处于空闲状态时关闭应用程序池-如果这是您的开发服务器,可能是因为您的空闲时间太长,以致应用程序池被回收,而您的InProc会话被终止

我不确定快速实现stateserver或sqlserver而不是inproc有多容易,但下面是一步一步的说明 为单个应用程序池配置空闲工作进程分页 1.打开IIS管理器

2.在连接窗格中选择应用程序池,在应用程序池窗格中选择应用程序池,然后单击高级设置。。。在操作窗格中

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


4.单击“确定”。

这将导致会话从不超时,并使服务器不必要地处于繁忙状态。只要打开资源管理器窗口,它就会保持会话,这比设置6小时的会话超时安全,因为这意味着,如果有人关闭页面并打开一个新会话,前者将保持打开状态,直到超时,浪费不必要的资源。我没有使用/设置FormsAuthenticationTicket。我只使用这一行:FormsAuthentication.SetAuthCookieuserId.ToString,false;在这种情况下,是否可以设置FormsAuthenticationTicket cookie超时?我在WinXP上使用IIS。所以我不能设置关闭工作进程,对吗?没有tkt,试试表单超时valSorry,但是没有tkt意味着什么?另外,您建议将slidingExpiration设置为true,但Filburt建议将slidingExpiration设置为false。您建议我将slidingExpiration设置为false,但是jspcal建议我将属性设置为true…如果将slidingExpiration设置为true,则无法强制在6小时后终止会话,因为会话时间窗口将在每次页面请求时更新到指定的超时。
<authentication mode="Forms">
    <forms requireSSL="false"
        defaultUrl="Default.aspx"
        loginUrl="Login.aspx"
        path="/"
        slidingExpiration="false"
        timeout="360"
        name=".ASPXFORMSAUTH">
    </forms>
</authentication>