关于iis session详解

session基本操作

添加 修改 session项

session.add("test", datetime.now);
session["test"] = datetime.now;

添加和修改session的方法是一样的,当指定的session标识不存在时,系统会添加。当存在时系统会更新。

删除 session项

session.remove("test");

不要使用session["test"] = null; 这样只是将值设置为null!

移除所有session项

session.clear(); 或 session.removeall();

终止当前会话状态

session.abandon();

当前session项数量

session.count

当前sessionid

session.sessionid

session何时创建

所有浏览器(ie、chrome、firefox)当第一次打开浏览器时(当前未运行浏览器时),服务器端会创建新的session。

ie浏览器,当已有浏览器运行时,打开新的浏览器则会创建新的session。

而chrome、firefox当已有浏览器运行时,打开新的浏览器不会创建新的session。

当session过期后,继续访问时会创建session。当session创建时会触发 global.asax 中的session_start方法。

session何时过期

  • 代码 session.abandon(); 引起session过期。
  • session超时,自动过期。
  • web.config 被修改,将会过期。
  • iis的应用程序池被回收引起。

当session过期时会触发 global.asax 中的session_end方法。

奇怪的问题:

 session.abandon(); 和 session超时自动过期的效果是一样的。引起的过期后,当刷新页面时会执行session_start 和 session_end方法。

如何避免在session_start 中添加session["sessionstartdatetime"] = datetime.now;

在调用session.abandon();后执行response.cookies.add(new httpcookie("asp教程.net_sessionid", ""));让sessionid重置。

session过期时间

在web.config中设置 <sessionstate mode="inproc" timeout="20"></sessionstate> 分钟值。(未填写时默认是20分钟过期)

iis的会话超时设置并不起效。(设置位置如下图)

网站关联的应用程序池,的回收时间限制。经测试也不起效。但如果手动回收或设置定时回收则起效。

(如何关联网站应用程序池如下图)

如何防止session过期

可以设置较长的session过期时间。但如果设置过长可能会引起服务器负担过重。

将session模式设置为进程外或数据库教程中。在此就不做讨论。

一般实际情况可能是,用户在某些页面,如博客文章提交页,在编辑过程因为要很长时间。

可能在提交时发现session过期了。而导致用户信息丢失无法提交文章。

如果是这种情况,可能只想将指定页面的session时间延长。可以通过ajax定时访问后台的一空白页面。来保持session在线。

<script type="text/网页特效">
    function updatesession(){
        $.get('/ajax/updatesession.aspx');
    }
    window.setinterval(updatesession, 60000);
</script>

建立一个空页面updatesession.aspx

注意在page_load中添加 注意当ajax请求aspx页面时,aspx页面应设置为不允许缓存!

protected void page_load(object sender, eventargs e)
{
    response.appendheader("pragma", "no-cache");
    response.appendheader("cache-control", "no-cache, must-revalidate");
    response.appendheader("expires", "0");
}

关于sessionid

当session过期后,sessionid并未改变。

调用 response.cookies.add(new httpcookie("asp.net教程_sessionid", "")); 可设置sessionid

当设置为空时,服务器端会创建新的session。而老的session并未被释放。

当设置为其他已有的sessionid值时,此时的session将获取的是指定的session。这就是session劫持了。

如何统计当前网站session个数。

创建类

view sourceprint?

public class constants
{
    /// <summary>
    /// 当前session个数
    /// </summary>
    public static int sessioncount = 0;
  
    /// <summary>
    /// 累计session个数
    /// </summary>
    public static int sessionallcount = 0;
}

 

在global.asax中添加

view sourceprint?

void session_start(object sender, eventargs e)
{
    constants.sessionallcount++;
    constants.sessioncount++;
    session["sessionstartdatetime"] = datetime.now;
}
  
void session_end(object sender, eventargs e)
{
    constants.sessioncount--;
}

 

时间: 2024-08-30 11:51:58

关于iis session详解的相关文章

[ASP.NET] Session 详解

asp.net|session|详解 阅读本文章之前的准备 阅读本文章前,需要读者对以下知识有所了解.否则,阅读过程中会在相应的内容上遇到不同程度的问题. 懂得ASP/ASP.NET编程  了解ASP/ASP.NET的Session模型  了解ASP.NET Web应用程序模型  了解ASP.NET Web应用程序配置文件Web.config的作用.意义及使用方法  了解Internet Information Services(以下简称IIS)的基本使用方法  了解如何在Microsoft S

Session 详解

session|详解 阅读本文章前,需要读者对以下知识有所了解.否则,阅读过程中会在相应的内容上遇到不同程度的问题. 懂得ASP/ASP.NET编程 了解ASP/ASP.NET的Session模型 了解ASP.NET Web应用程序模型 了解ASP.NET Web应用程序配置文件Web.config的作用.意义及使用方法 了解Internet Information Services(以下简称IIS)的基本使用方法 了解如何在Microsoft SQL Server中创建一个数据库. Sessi

应该学会:ASP.NET的 Session 详解

asp.net|session|详解 Session模型简介 Session是什么呢?简单来说就是服务器给客户端的一个编号.当一台WWW服务器运行时,可能有若干个用户浏览正在运正在这台服务器上的网站. 当每个用户首次与这台WWW服务器建立连接时,他就与这个服务器建立了一个Session,同时服务器会自动为其分配一个SessionID,用以标识这 个用户的唯一身份.这个SessionID是由WWW服务器随机产生的一个由24个字符组成的字符串,我们会在下面的实验中见到它的实际样子. 这 个唯一的Se

PHP中session详解

session|详解 综述 Session指的就是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间.从上述的定义中我们可以看到,Session实际上是一个特定的时间概念. 一般来说,在网站上某一个页面中的变量(指服务器端变量,下同)是不能在下一页中用的,有了session就好办了.session中注册的变量可以作为全局变量使用.这样我们就可以将session用于用户身份认证,程序状态记录,页面之间参数传递. 在PHP3版本中是如何实现session

Session详解

session|详解 摘要:虽然session机制在web应用程序中被采用已经很长时间了,但是仍然有很多人不清楚session机制的本质,以至不能正确的应用这一技术.本文将详细讨论session的工作机制并且对在Java web application中应用session机制时常见的问题作出解答. 一.术语session 在我的经验里,session这个词被滥用的程度大概仅次于transaction,更加有趣的是transaction与session在某些语境下的含义是相同的. session,

ASP.NET的Session 详解

阅读本文章前,需要读者对以下知识有所了解.否则,阅读过程中会在相应的内容上遇到不同程度的问题. 懂得ASP/ASP.NET编程 了解ASP/ASP.NET的Session模型 了解ASP.NET Web应用程序模型 了解ASP.NET Web应用程序配置文件Web.config的作用.意义及使用方法 了解Internet Information Services(以下简称IIS)的基本使用方法 了解如何在Microsoft SQL Server中创建一个数据库. Session模型简介 Sess

一起谈.NET技术,ASP.NET的Session 详解

阅读本文章前,需要读者对以下知识有所了解.否则,阅读过程中会在相应的内容上遇到不同程度的问题. 懂得ASP/ASP.NET编程 了解ASP/ASP.NET的Session模型 了解ASP.NET Web应用程序模型 了解ASP.NET Web应用程序配置文件Web.config的作用.意义及使用方法 了解Internet Information Services(以下简称IIS)的基本使用方法 了解如何在Microsoft SQL Server中创建一个数据库. Session模型简介 Sess

艾伟_转载:ASP.NET Session详解

当用户在 Web 应用程序中导航 ASP.NET 页时,ASP.NET 会话状态使您能够存储和检索用户的值.HTTP 是一种无状态协议.这意味着 Web 服务器会将针对页面的每个 HTTP 请求作为独立的请求进行处理.服务器不会保留以前的请求过程中所使用的变量值的任何信息. ASP.NET 会话状态将来自限定时间范围内的同一浏览器的请求标识为一个会话,当每个用户首次与这台WWW服务器建立连接时,他就与这个服务器建立了一个Session,同时服务器会自动为其分配一个SessionID,用以标识这个

Oracle的v$session详解

首先查看一下v$session都存在哪些列 SYS@ORCL>desc v$session Name                                      Null?    Type ----------------------------------------- -------- ---------------------------- SADDR                                              RAW(4) SID