gpt4 book ai didi

asp.net - 将 session 超时增加到一周或更长时间

转载 作者:行者123 更新时间:2023-12-03 22:34:16 25 4
gpt4 key购买 nike

为了增加 session 超时,看来我将使用以下设置:

<system.web>
<sessionState mode="InProc" timeout="20" />
/* Etc... */
</system.web>

此处超时设置为 20 分钟(默认值)。而且,显然,最大值是 525,600 分钟,或一年。

一周后我可以回到 Facebook 并且我仍然登录。这就是我希望我的应用程序的行为方式。但据 this answer ,这会对性能产生不利影响,因为“您的非事件 session 将保留在 Web 服务器内存中,这可能会导致应用程序池回收,从而导致所有用户丢失所有 session 。”

有谁知道有关此性能命中的详细信息?而且,如果这是真的,是否有一种更高效的方式让用户像 Facebook 这样的网站保持登录状态?

更新:

下面是我当前 web.config 文件的相关部分。
<system.web>
<authentication mode="None" />
<sessionState mode="InProc" timeout="60" />
<compilation debug="true" targetFramework="4.6" />
<httpRuntime targetFramework="4.5.2" executionTimeout="240" maxRequestLength="20480" />
<httpModules>
<add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" />
</httpModules>
<customErrors mode="Off"></customErrors>
</system.web>
<system.webServer>
<modules>
<remove name="FormsAuthentication" />
<remove name="ApplicationInsightsWebTracking" />
<add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" preCondition="managedHandler" />
</modules>
<validation validateIntegratedModeConfiguration="false" />
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="20971520" />
</requestFiltering>
</security>
</system.webServer>

更新 2:

看起来我错误地将两个问题(身份验证和 session 状态)混为一谈。我很抱歉没有正确地整理我在谷歌上搜索的一些问题。我的目标只是延长用户登录的时间。

最佳答案

对于登录,您必须使用 FormsAuthenticationASP.NET Identity (基于 cookie 的身份验证的改进版本 FormsAuthentication )允许您将身份验证 cookie 保留数周/月以上。 FormsAuthentication是无状态的,为了支持多台服务器,可以使用单个machineKey在所有服务器中。所有示例和教程主要是使用指南 FormsAuthentication默认情况下。

Facebook和大家都用认证cookie,没人用Session用于登录。

理想情况下 Session是坏的,而且大多是不必要的。可以用HttpRuntime.Cache代替.可以轻松设置缓存以使用某些外部提供程序,例如 Fabric 缓存或 Redis。要使缓存由用户隔离,您可以简单地将缓存项的键附加到用户名。

更新

使用 FormsAuthentication 没有坏处除了解密 cookie 所需的 CPU 开销很少,但这也可以通过缓存身份验证票来避免。

唯一支持的理由Session可能与旧版 ASP 兼容他们可能支持的应用程序。

在新的 ASP.NET MVC 示例中,他们在代码(启动时)中配置了基于 cookie 的身份验证,而不是 session 。虽然 session 是在 web.config 中配置的,但只要你不想在 session 中存储任何东西,你就可以完全禁用它。

关于asp.net - 将 session 超时增加到一周或更长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45773013/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com