博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
asp.net 设置session失效时间
阅读量:4702 次
发布时间:2019-06-10

本文共 2073 字,大约阅读时间需要 6 分钟。

在Asp.net应用中,很多人会遇到Session过期设置有冲突。其中,可以有四处设置Session的过期时间:

一、全局网站(即服务器)级 

IIS-网站-属性-Asp.net-编辑配置-状态管理-会话超时(分钟)-设置为120,即为2小时,即120分钟后如果当前用户没有操作,那么Session就会自动过期。

二、网站级 

IIS-网站-具体网站(如DemoSite)-属性-Asp.net,此时有两个选项,一个是“编辑全局配置”,一个是“编辑配置”。

如果“编辑全局配置”,就和上个配置一样。

如果“编辑配置”,则只对当前网站生效。因为一个服务器可能有很多独立网站。

1、继续选择“状态管理”-会话超时(分钟)-设置为360,即360分钟。效果同上,只不过只对当前网站生效。

2、身份认证-Forms-Cooke超时,选择"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的过期时间,可以用

view plaincopy to clipboardprint?

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中即:

view plaincopy to clipboardprint?

<?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.web>  
<authorization>  
<allow users="*" />  
</authorization>  
</system.web>  
</location>  
</configuration>  

<?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.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
</configuration>

以上四处设置的优先级为页面级>应用程序级>网站级>服务器级。换句话说,如果页面设置为20分钟,网站设置为120分钟,那么,显然以20分钟为生效的过期时间。

另外一个值得注意 的地方。

在设置二处,设置会话超时(SessionState)120分钟,而同时用forms认证,设置为“00:15:00”,即15分钟,并且slidingExpirationo为false,则真正生效的Session过期时间是多少呢?

有效的结果是SessionState的设置,即120分钟。

如果有设置Session过期时间没有生效的,请检查以上几处配置。

转载于:https://www.cnblogs.com/xiaolong617/archive/2012/07/05/2577268.html

你可能感兴趣的文章
C#dataset中数据导出到excel
查看>>
node和yarn
查看>>
hdu 4325
查看>>
移动端 html基值(转载)
查看>>
开源框架 系统
查看>>
积木艺术 (Cubist Artwork,Tokyo 2009,LA 4636)
查看>>
lvs+keepalived实现高可用群集配置详解
查看>>
Java连接MySQL数据库——含详细步骤和代码
查看>>
[平面文件源 [1]] 错误: 数据转换失败。列“列 1”的数据转换返回状态值 4 和状态...
查看>>
漫谈二分查找-Binary Search (转)
查看>>
编写自定义类实现json和pickle文件的多行写入,多行读取
查看>>
如果一个网页需要同时有多种语言,那么网页需要用什么编码格式?
查看>>
fast-json 内幕
查看>>
固定导航栏demo
查看>>
前端通信、跨域
查看>>
MD5加密
查看>>
如何向ASP.NET Web 服务器控件添加客户端脚本事件
查看>>
quick check
查看>>
陶瓷天线
查看>>
Android 环信聊天头像昵称显示解决方案
查看>>