欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

详解C# 中Session的用法

程序员文章站 2022-04-10 09:39:47
session模型简介 在学习之前我们会疑惑,session是什么呢?简单来说就是服务器给客户端的一个编号。当一台www服务器运行时,可能有若干个用户浏览正在运正在这台服务器上的网站。当每 个用户首次...

session模型简介

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

  这个唯一的sessionid是有很大的实际意义的。当一个用户提交了表单时,浏览器会将用户的sessionid自动附加在http头信息 中,(这是浏览器的自动功能,用户不会察觉到),当服务器处理完这个表单后,将结果返回给sessionid所对应的用户。试想,如果没有 sessionid,当有两个用户同时进行注册时,服务器怎样才能知道到底是哪个用户提交了哪个表单呢。当然,sessionid还有很多其他的作用,我们会在后面提及到。

  除了sessionid,在每个session中还包含很多其他信息。但是对于编写asp或asp.net的程序与来说,最有用的还是可以通过 访问asp/asp.net的内置session对象,为每个用户存储各自的信息。例如我们想了解一下访问我们网站的用户浏览了几个页面,我们可能在用户可能访问到每个的页面中加入。到这里我们对sassion有了一定的认识,那么下面介绍一写sassion的属性及特点。

session具有以下特点

(1)session中的数据保存在服务器端;
(2)session中可以保存任意类型的数据;
(2)session默认的生命周期是20分钟,可以手动设置更长或更短的时间。

需要注意的是在session变量存储过多的数据会消耗比较多的服务器资源,在使用session时应该慎重。

session的具体用法

(1)存入字符串:

session["username"] = "aaa";

(2)取值:

string str = session["username"].tostring();

获取session时一般这么写:string username=session[“username”],但是在给对象赋值的时候我们需要注意两点:

    2.1:判断是否为null

    2.2:类型的转换

 如是什么某记录的编号:
    session["id"] = 1;
    这样取值:
    int id1 = convert.toint32(session["username"]);

(3)释放方式:清除某个session

     session["username"] = null;
     session.remove("username");

     清除全部session

     session.abandon();

     session.removeall();

session数据存放的位置和形式

web.config 配置节点语法:

<system.web>
<sessionstate mode="off|inproc|stateserver|sqlserver"
cookieless="true|false"
timeout="number of minutes"
stateconnectionstring="tcpip=server:port"
sqlconnectionstring="sql connection string"
statenetworktimeout="number of seconds"
/>
</system.web>

mode:设置将session信息存储到哪里

off:不使用session功能;

inproc :将session存储在iis进程内,这是默认值,也最常用(优点是简单,性能最高。但是当重启iis服务器时session丢失。);

stateserver :将session存储在asp.net状态服务进程中(重新启动web应用程序时保留会话状态,并使会话状态可以用于网络中的多个web服务器。);

sqlserver :将session存储在sql server中(存储在内存和磁盘中,服务器挂掉重启后都还在)。

cookieless:设置客户端的session信息存储到哪里

ture 使用cookieless模式;这时客户端的session信息就不再使用cookie存储了,而是将其通过url存储。

false 使用cookie模式,这是默认值。

timeout 设置经过多少分钟后服务器自动放弃session信息。默认为20分钟。

stateconnectionstring 设置将session信息存储在状态服务中时使用的服务器名称和端口号

例如:"tcpip=127.0.0.1:42424”。当mode的值是stateserver是,这个属性是必需的。(默认端口42424)。

sqlconnectionstring 设置与sql server连接时的连接字符串。

例如"data source=localhost;integrated security=sspi;initial catalog=joye"。当mode的值是sqlserver时,这个属性是必需的。

statenetworktimeout 设置当使用stateserver模式存储session状态时,经过多少秒空闲后,断开web服务器与存储状态信息的服务器的tcp/ip连接的。默认值是10秒钟。

以上就是详解c# 中session的用法的详细内容,更多关于c#中session的用法的资料请关注其它相关文章!

相关标签: c# session 用法