zoukankan      html  css  js  c++  java
  • ASP.NET常用信息保持状态学习笔记二

    3、Session
             Session数据保存在服务器端中。每个客户端的相关session都独立存储,因为SessionId以cookie的方式保存在浏览器的缓存中。并且保存到整个的会话过程中,直到浏览器关闭。还要说下这个SessionId,如果你认真的去研究HTTP报文请求头你会发现使用session的时候,每次浏览器都会像服务器发送一个sessionid的cookie,这也就说明了sess的实现是跟cookie相关的。
            在一般处理程序中使用Session必须实现标记接口IRequireSessionState,实现了这个接口,服务器也就会自动产生一个sessionId。
             还有一个方法是销毁session的:session.Abandon()。

           一般情况我们都只使用进程内的session,session还可以保存到进程外,主要有2种方式:

          进程外Session设置:

                     1、StateServer:这个是存储在另一个进程中,使用这个方法必须启用 asp_net状态服务,使用它很简单只要修改网站配置文件

                            <sessionstate mode="StateServer" stateConnectionString="tcpip=localhost:42424">

                           端口号默认为42424,如果想改为其他端口注册表修改就OK了:
                                     注册表路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters
                                                          AllowRemoteConnection:是否允许远程连接请求。
                                                           port:端口号。

                         如果关闭或者重启asp_net状态服务,session就会清除。

                   2、 存储在数据库中   sqlserver:sqlserver又提供了2种方法,一个是临时存储,一个是永久存储的。使用 aspnet_regsql.exe这个程序配置位于   c:\WINNT\Microsoft.NET\Framework\v4.0.30319\     或者直接在dos中输入也OK。
    这个文件夹内微软提供了2套的脚本

                           临时存储:InstallSqlState.sql
                           永久存储: InstallPersistSqlState.sql(需要SQLSERVERAgent服务调度作业,需要打开sql代理。) 

      

           配置:         <sessionState mode="SQLServer"    sqlConnectionString="data source=.;userid=sa;password=" cookieless= "false"  />

    看下配置图:

    配置完成之后你会发现多了一个数据库,叫做aspnedb,存储session的数据是经过编码后的二进制数。

       再来看下  进程内Session丢失的情况:
       1、aspnet_wp.exe或w3wp.exe在任务管理器中或其他情况下导致其他进程被终止运行(进程重启)。
       2、修改了后台代码(.CS)文件后,重新编译过后丢失,(如果只编译一次的话,有时候不会丢失)。
       3、修改了web.config配置文件。
       4、win2003环境下,应用程序池被回收、停止后重启。
       5、服务器上的bin目录动态链接库(dll文件)被更新。
       6、最后一种就是存放了session的电脑被重启。(这是肯定的谁都知道。)

           4、  Application

           Application:在服务端中保存数据共享的一种方式,在服务器端有且只有一个,第一次访问便创建。整个应用程序网站只有一个,像网站的访问量啊等等可以用这个实现。这个一般应该不常用,除非一些数据共享的。

                                 使用前后记得先加锁解锁。  Application.Lock();  Application.UnLock();


     

    本文从百度空间搬家到博客园。

  • 相关阅读:
    Asp.Net Web API 2第十六课——Parameter Binding in ASP.NET Web API(参数绑定)
    博客园博客评论一个奇怪的现象~~这应该不是圣诞礼包
    Asp.Net Web API 2第十五课——Model Validation(模型验证)
    PostgresQL 中有没有rownum这样的,显示结果集的序号
    在postgresqlz中查看与删除索引
    Spring事务异常rollback-only
    spring之Environment
    Spring事务管理——回滚(rollback-for)控制
    类的静态方法无法使用aop拦截
    Spring/SpringBoot定义统一异常错误码返回
  • 原文地址:https://www.cnblogs.com/yunanwu/p/4168562.html
Copyright © 2011-2022 走看看