详解C# 中Session的用法

 更新时间:2020年07月23日 15:18:42   作者:时光巷尾  
这篇文章主要介绍了C# 中Session的用法,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下

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#实现伪装文件夹功能

    C#实现伪装文件夹功能

    这篇文章主要为大家详细介绍了如何利用C#实现伪装文件夹的功能,文中的示例代码讲解详细,对我们学习C#有一定的帮助,感兴趣的小伙伴可以跟随小编一起了解一下
    2022-12-12
  • C#读取静态类常量属性和值的实例讲解

    C#读取静态类常量属性和值的实例讲解

    在本篇文章里小编给各位分享的是关于C#读取静态类常量属性和值的实例讲解,有兴趣的朋友们可以学习下。
    2020-03-03
  • C#时间戳基本使用方法详解

    C#时间戳基本使用方法详解

    这篇文章主要给大家介绍了关于C#时间戳基本使用方法的相关资料,文中通过实例代码介绍的非常详细,对大家学习或者使用C#具有一定的参考学习价值,需要的朋友可以参考下
    2022-10-10
  • unity使用socket编程实现聊天室功能

    unity使用socket编程实现聊天室功能

    这篇文章主要为大家详细介绍了unity使用socket编程实现聊天室功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • 基于WPF封装一个可扩展的Window

    基于WPF封装一个可扩展的Window

    WPF中Window相信大家都很熟悉,有时我们有一些自定义需求默认Window是无法满足的,所以本文就来和大家聊聊WPF如何封装一个可扩展的Window吧
    2024-04-04
  • C#判断给定IP地址是否在指定范围内的方法

    C#判断给定IP地址是否在指定范围内的方法

    这篇文章主要介绍了C#判断给定IP地址是否在指定范围内的方法,涉及C#针对IP地址的转换与匹配操作技巧,非常具有实用价值,需要的朋友可以参考下
    2015-03-03
  • C#使用TimeSpan对象实现获取时间间隔

    C#使用TimeSpan对象实现获取时间间隔

    TimeSpan对象代表两个时间段的间隔或跨度,使用TimeSpan对象可以方便地获取两个时间段的间隔,下面我们就来看看C#使用TimeSpan对象实现获取时间间隔的具体操作吧
    2024-01-01
  • c# 生成二维码的示例

    c# 生成二维码的示例

    这篇文章主要介绍了c# 生成二维码的示例,帮助大家更好的理解和使用c#编程语言,感兴趣的朋友可以了解下
    2020-11-11
  • 基于C#检测敏感词功能

    基于C#检测敏感词功能

    这篇文章主要为大家详细介绍了如何基于C#实现检测敏感词功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-11-11
  • WPF开发之UniformGrid和ItemsControl的应用详解

    WPF开发之UniformGrid和ItemsControl的应用详解

    为了简化开发,WPF提供了UniformGrid布局和ItemsControl容器,本文以一个简单的小例子,简述如何在WPF开发中应用UniformGrid和ItemsControl实现均匀的布局,希望对大家有所帮助
    2024-01-01

最新评论