在Asp.net应用中,很多人会遇到Session的过期设置冲突。其中,可以设置四个Session的过期时间:
IIS-网站-属性-Asp.net-编辑配置-状态管理-session超时时间(分钟)-设置为120,也就是2小时,即120分钟后,如果当前用户没有任何动作,那么Session它会自动过期。
IIS-网站-特定网站(如DemoSite)-属性-Asp.net,有两个选项,一个是“编辑全局配置”,一个是“编辑配置”。
如果“编辑全局配置”,就跟上次配置一样。
如果“编辑配置”,只针对当前站点。因为一个服务器可能有很多独立的网站。
1.继续选择“状态管理”-会话超时(分钟)-设置为360,即360分钟。效果同上,只针对当前站点。
2.身份认证-表格-库克加班,选择“12:00:00”,即12小时。有八个选项:
00:15:00
00:30:00
01:00:00
02:00:00
04:00:00
08:00:00
12:00:00
1:00:00:00
最长24小时,最短15分钟。这是默认配置。它可以在应用程序中自由定制。
和网站管理一样,只是范围仅限于当前应用。
在一个页面上,设置Session.Timeout = 30; 您可以临时修改页面的session过期时间。
查看某个Session的过期时间,就可以使用了
查看 plaincopy 到剪贴板打印?
TimeSpan SessTimeOut = new TimeSpan(0, 0, System.Web.HttpContext.Current.Session.Timeout, 0, 0);
TimeSpan SessTimeOut = new TimeSpan(0, 0, System.Web.HttpContext.Current.Session.Timeout, 0, 0);
其中,二和三设置,体现在Web.config中是:
查看 plaincopy 到剪贴板打印?
<?xml version="1.0"?>
<configuration>
<system.web>
<authentication mode="Forms" >
<forms name="AuthLogin" loginUrl="/Login.aspx" protection="All" timeout="360 " slidingExpiration="true"/>
</authentication>
<sessionState mode="InProc" cookieless="false" timeout="20" />
</system.web>
<location path="Login.aspx">
<system.网络>
<授权>
<allow users="*" />
</授权>
</system.web>
</location>
<forms name="AuthLogin" loginUrl="/Login.aspx" protection="All" timeout="360" slidingExpiration="true"/>
</authentication>
<sessionState mode="InProc" cookieless="false" timeout= "20" />
</system.web>
<location path="Login.aspx">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</位置>
</配置>
以上四种设置的优先级为页面级>应用级>网站级>服务器级。换句话说,如果页面设置为20分钟,网站设置为120分钟,那么,显然以20分钟为有效过期时间。
另一个值得注意的地方。
在两个地方,设置session超时时间(SessionState)120分钟,同时形成鉴权,设置为“00:15:00”即15分钟,同时滑动Expirationo为false,才真正生效Session的过期时间是多少?
有效结果是 SessionState 建立,即 120 分钟。
如果有设置Session过期时间不生效,请检查上面的配置。
你适合学Java吗?4大专业测评方法
代码逻辑 吸收能力 技术学习能力 综合素质
先测评确定适合在学习