`

asp.net session 介绍一三种Session存储方式

 
阅读更多

 

asp.net session 介绍一三种Session存储方式

分类: ASP.NET 246人阅读 评论 (0) 收藏 举报

对于asp.net的程序来说,session是一个必需要了解的对象。
下面就对session做一个具体介绍。


简单来说,Session就是服务器给客户端的一个编号,当一台web服务器运行时,可能是有多个用户都在浏览这台服务器上的网站,当每个 用户首次与这台服务器建立连接时,它就与这个服务器建立了一个Session,同时服务器就会自动为其分配一个SessionId,用以标识这个用户的唯 一身分,这个Session就是有服务器随机产生的一个由24个字符组成的字符串。

         这个唯一的SessionId还是有很大的实际意义,当一个用户提交表单时,浏览器就会将用户的SessionId自动附加在HTTP头信息中,当服务器处理完这个表单后,就会将结果返回给SessionId所对应的用户。

          如下是Web.config如何配置Session的:

           <configuration>
  <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>
</configuration>

其中各个节点属性:
mode: Session的存储方式(必有的属性)。
           InProc:将Session存到进程内(这是Default值。)
           off:禁用Session.
           StateServer:将Session存到独立的状态服务中(Asp.net State Service).
           SqlServer:将Session存到SqlServer中。
Cookieless:设置客户端Session存储的方式。
                 false:使用Cookie模式(default).
                 true:使用Cookieless模式。
timeout:设置Session过期时间(default is 20 minutes)
stateConnectionString: 设置Session独立存放的状态服务所在服务器的名称(地址)和端口号,当mode=&ldquo;stateserver时,这个属性就是必须的。
     sqlConnectionString:设置与Sqlserver的连接字符串,当mode="sqlserver"时,这个属性时必须的。
stateNetWorkTimeout:设置当mode=&ldquo;StateServer&rdquo;时,经过多少秒空闲后,断开web服务器与存储状态信息服务器的TCP/IP连接(default is 10 seconds).

asp.net中客户端Session的存储。
      asp.net中,默认是使用Cookie存储Session的,如果是将cookieless="false",改成cookieless="true",则session就不用cookie来存储了,而是使用url来存储。

 asp.net服务器端session存储在进程内(inproc)
      当mode="Inproc"时,服务器的Session存储在IIS进程中,当IIS关闭,重启时,这些Session信息就会丢失,但这种模式最大的好处就是性能提高。

      asp.net服务器端Session存储在进程外(StateServer)
     当mode="StateServer"时,服务器的Session就存储在"ASP.NET State Server"这个服务的进程中,在服务中找到名为:&ldquo;ASP.NET State Service&rdquo;的服务,启动这个服务,在资源管理器的进程中就能找到一个名 为:&ldquo;aspnet_state.exe"的进程,这个就是我们保存 Session的进程。
      &rdquo;ASP.NET State Server"服务可以与Web服务器分开.eg:web服务器在192.168.0.100上,&ldquo;asp.net state service"服务在192.168.0.101上,则可以进行设置:
     mode="StateServer" stateConnection="tcpip=192.168.1.101:42424".

     asp.net服务器端Session存储到SQLServer中(SQLServer),
    当mode="sqlserver"时,服务器的Session就是存储到Sql server中建立一个存储Session的数据库。在
 %windir%/Microsoft.NET/Framework/v2.0.50727 下有个名为: InstallSqlState.sql 的sql脚本文件. 这个脚本是专门用来建存储Session的数据库以及一个维护Session信息数据库的SQL Server代理作业的.

      执行此sql脚本后,会看到一个新增的aspstate数据库,但这个数据库中,只有存储过程,没有用户表,用户表放到了tempdb这个数据库中去 了,ASpstateTempSessions和ASPStateTempApplications,Session信息存储到了 ASPStateTempApplication存储了asp中Application对象信息。

    另外查看管理->SQL Server代理->作业,会发现多了一个名为:

ASPState_job_DeleteExpiredSession的作业,这个作业实际上是每分钟去ASPStateTempSession中删除过期的Session信息。

      上面的方法是建立Session数据库的一个”官方“方法,但在实际的应用中一般没这么去建,而是采用另一种方法,使用下面这段命令来自动创建Session数据库:

 

aspnet_regsql.exe -S ServerName/InstanceName -U User -P Password -d DBName -ssadd -sstype c

      此命令将在ServerName/InstanceName建立DBName的数据库, 用户存储Session的数据库. 此数据库中包含了存储过程和用户表.  同时在SQL Server代理 -> 作业 中也加入了相应的作业.

      然后在Web.config中设置好配置信息:

mode="SQLServer" sqlConnectionString="data source=ServerName/InstanceName; Integrated Security=SSPI;"

      "Integrated Security=SSPI;" 是指使用Windows集成身份验证.

       如果使用SQL用户登陆方式. 则在sqlConnectionString中设置好"userid=sa; password=***".

      这样一来就可以将Session存放到SQLServer中了


文章出处:DIY部落(http://www.diybl.com/course/4_webprogram/asp.net/netjs/20090304/158092.html )

分享到:
评论

相关推荐

    asp.net 的Session数据库存储方式

    在ASP.NET中使用数据库存储Session数据是一种有效的方式来解决高并发和分布式环境下的会话状态管理问题。通过配置Web.config文件中的`&lt;sessionState&gt;`节点,开发人员可以轻松地切换Session存储的位置。虽然这种方法...

    ASP.NET的 Session 详解

    但是,如果你做了一个大型的网站,需要对整个网站做一些整体配置,例如整个网站的页面使用何种语言编写的、网站的安全认证模式、Session 信息存储方式等,这时你就需要使用 Web.config 文件了。

    ASP.NET Session的七点认识

    ASP.NET Session是Web应用程序中用于在用户的会话期间存储用户特定信息的一种机制。它允许开发人员跨多个页面请求存储和检索用户数据,从而提供了更丰富的用户体验。Session状态在服务器端存储,确保了数据的安全性...

    asp.net购物车(cookie、session两种实现方式)

    Cookie是一种在客户端存储数据的技术,ASP.NET购物车使用Cookie时,通常会为每个商品创建一个唯一的标识,并在用户浏览商品时将这些标识存储在Cookie中。当用户添加商品到购物车时,服务器会返回一个新的或更新的...

    ASP.NET中Session实现原理浅析

    ASP.NET中的Session是用于在无状态HTTP协议下保持用户会话状态的一种机制。HTTP协议的无状态特性意味着每次客户端向服务器发送请求时,服务器不会记住之前的交互信息。为了解决这个问题,Session应运而生,它允许...

    asp.net session的应用

    在ASP.NET 2.0中,`SessionID`的存储有三种主要模式: 1. **Cookie**(默认):这是最常用的存储方式,但如果客户端禁用了Cookie,Session将无法正常工作。 2. **URL**:即使客户端禁用了Cookie,Session仍可通过将...

    在asp.net中使用session常见问题集锦

    ### 在ASP.NET中使用Session常见问题集锦 #### Session为何会丢失? 在ASP.NET应用程序中,用户的状态(Session)有时会出现丢失的情况。这种情况的发生可能是由于多种原因造成的,比如应用程序池的回收、Session...

    ASP.NET源码——[电子商务].Net Session购物车示例.zip

    ASP.NET 是一种由微软开发的用于构建Web应用程序的框架,它极大地简化了.NET开发者构建动态网站、Web服务和Web应用程序的过程。在这个"电子商务".Net Session购物车示例中,我们将探讨如何利用ASP.NET的核心功能,...

    一个基于 ASP.Net的进行Session 处理的高级技巧程序例子代码

    此外,ASP.NET还提供了其他Session处理方式,如“InProc”(存储在Web服务器进程的内存中)和“SQLServer”(存储在SQL Server数据库中)。每种模式都有其优缺点,需要根据实际需求和环境选择。 在处理高级Session...

    关闭页面时清空Session (ASP.net ) (已实现)

    在ASP.NET中,Session是内置对象之一,它为每个用户提供了独立的存储空间,可以用来保存各种数据类型的信息。然而,为了维护系统的稳定性和安全性,有时我们需要在特定情况下(比如关闭页面时)清除这些Session数据...

    asp.net做的购物车session

    Session是ASP.NET提供的一种机制,用于在用户的整个会话期间存储数据,这对于实现购物车这种需要跨页面保持用户状态的应用非常有用。 购物车的核心功能包括添加商品、查看商品、更新数量和移除商品。在ASP.NET中,...

    asp.net 用sqlserver 实现session共享 (100%成功)

    标题提到的"asp.net 用sqlserver 实现session共享 (100%成功)",就是一种将ASP.NET的Session存储在SQL Server数据库中的解决方案,这通常被称为State Server或SQL Server Mode的Session管理方式。这种方法允许不同...

    【ASP.NET编程知识】ASP.NET session.timeout设置案例详解.docx

    在 ASP.NET 编程中,会话超时设置是一个重要的配置项。默认情况下,ASP.NET 会话的超时时间是 20 分钟,当超过 20 分钟没有活动时,服务器将自动放弃会话信息。然而,在实际开发中,我们经常需要根据项目的需求来...

    ASP.NET中 Session、Application、Cookie的使用

    在ASP.NET web应用程序开发中,Session、Application和Cookie是三种常用的状态管理机制,它们用于在客户端和服务器之间存储和共享数据。理解并有效地利用这些机制对于构建动态、交互性强的Web应用至关重要。 **...

    ASP.NET SessionId.rar

    在ASP.NET中,当一个用户访问网站并开始与服务器交互时,系统会为该用户分配一个唯一的SessionId。这个标识符是通过加密生成的,并存储在用户的浏览器cookies中,或者在URL中作为查询字符串传递(如果禁用了cookies...

    asp.net简单会话(session)应用

    ASP.NET中的会话(Session)是Web开发中一个重要的概念,它允许开发者在用户的不同页面请求之间保持数据。本文将详细讲解ASP.NET中会话的应用,帮助你理解其工作机制。 一、什么是会话(Session)? 在Web应用程序...

    ASP.NET三层架构登录实例

    ASP.NET三层架构是一种常见的软件设计模式,用于将应用程序的业务逻辑、数据访问和用户界面分离,以实现更好的可维护性和可扩展性。在这个"ASP.NET三层架构登录实例"中,我们将探讨如何使用这种架构来创建一个用户...

    asp.net c# 在类中使用session的方法

    在ASP.NET中,Session是一种服务器端的存储技术,用于跟踪用户会话状态,保存特定于用户的变量或对象。在Web应用程序开发中,特别是在ASP.NET C#应用中,正确且有效地在类中使用Session是非常重要的,这能帮助我们...

    asp.net中session对象模式剖析

    在ASP.NET应用程序中,Session对象的工作模式可以通过以下四种方式进行配置: 1. **False(禁用模式)**:完全禁用Session功能。 2. **InProc(进程内模式)**:这是默认的Session模式,它将Session数据存储在当前...

Global site tag (gtag.js) - Google Analytics