Jon*_*ood 14 asp.net asp.net-mvc web-config asp.net-authentication
为了增加会话超时,我似乎会使用以下设置:
<system.web>
<sessionState mode="InProc" timeout="20" />
/* Etc... */
</system.web>
Run Code Online (Sandbox Code Playgroud)
此处超时设置为20分钟(默认值).而且,显然,最大值是525,600分钟,或一年.
我可以在一周后回到Facebook,我仍然登录.这就是我希望我的应用程序运行的方式.但根据这个答案,这可能会对性能产生负面影响,因为"您的非活动会话将保留在Web服务器内存中,这可能导致应用程序池回收,这将导致所有用户丢失所有会话."
有谁知道这个性能命中的细节?并且,如果它是真实的,是否有更高效的方式来保持用户登录像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>
Run Code Online (Sandbox Code Playgroud)
更新2:
看起来我错误地将两个问题(身份验证和会话状态)混为一谈.我为没有正确排序我正在谷歌搜索的一些问题而道歉.我的目标只是延长用户登录的时间.
对于登录,您必须使用FormsAuthentication或ASP.NET Identity(基于cookie的改进版本的身份验证FormsAuthentication),这允许您将身份验证cookie保留超过数周/月.FormsAuthentication是无状态的,为了支持多个服务器,您可以machineKey在所有服务器中使用single .FormsAuthentication默认情况下,所有示例和教程主要指导使用.
Faceboook和每个人都使用身份验证cookie,没有身体Session用于登录.
理想情况Session是糟糕的,大多是不必要的 它可以替换为HttpRuntime.Cache.可以轻松设置缓存以使用某些外部提供程序,如Fabric缓存或Redis.要使缓存与用户隔离,您只需使用用户名附加缓存项的键即可.
UPDATE
FormsAuthentication除了解密cookie所需的CPU开销很少外,使用没有任何缺点,但通过缓存身份验证票证也可以避免这种情况.
支持的唯一原因Session可能是与ASP他们可能支持的旧应用程序的兼容性.
在新的ASP.NET MVC示例中,他们在代码(启动时)中配置了基于cookie的身份验证,而不是会话.虽然会话是在web.config中配置的,但只要您不想在会话中存储任何内容,就可以完全禁用它.
| 归档时间: |
|
| 查看次数: |
920 次 |
| 最近记录: |