asp_net中的session

缓存Cookie是保存在浏览器端的缓存中,如果设置了保存时间,那么cookie就会存到硬盘中去。

       而session是保存在服务器端的。当服务器端产生一个session时,它会对应有一个sessionid,然后把这个sessionid写到一个cookie里面去,随后发到浏览器端。

浏览器端收到这个保存了sessionid的cookie后,将它写到缓存中去。后面浏览器对服务器的请求过程中,都会带着这个cookie。到了服务器端,用cookie中保存的sessionid找到session信息。于是程序员就可以使用这些信息了。

 

要注意的是:一次会话就是一次session,所以每次请求页面的时候都会有一个cookie带着一个sessionid往返。

 

Session常用属性、方法

属性:SessionID       唯一用户会话标识符

       使用举例:Session.SesstionID

              TimeOut       用户超时(单位:分钟),默认20分钟

       使用举例:Session.TimeOut=60;

              Count           当前的这个SessionID里面保存了多少个键值对。(因为sessionID只有一个,它里面保存了多对键值对)

 

方法:Abandon 用于显示结束对话

       使用举例:Session.Abandon();

 

Session深入

(1)、Session分三种:
1.InProc(进程内)-默认就是这种(保存在本进程中)
--------------------------------------------------------------------------

(2)、进程外:可以在IIS或ASPNET服务意外关闭时继续保持状态:

(保存在localhost:42424这个套接字所指定的机器中)

2.1StateServer:使用aspnet_state.exe
2.2修改配置文件:
<sessionState mode="StateServer" stateConnectionString="tcpip=localhost:42424"/>

上面的这句话在默认的情况下是没有的。自己把它写到web.config中的<system.web>这一级目录下面。

localhost改成对方的ip那么session就保存在了对方的机子上面。

2.3设置是否允许远程使用,位置:C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319
注册表中的启用允许远程

首先打开注册表(Win+R-> regedit)找到:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters(AllowRemoteConnection 设置为1就可以了)

2.4默认端口号:42424,当然,也可以自己修改,修改也是在注册表中。在AllowRemoteConnectionr 的下面。

2.5开启服务:我的电脑-管理-服务与应用程序-服务-ASP.NET State Service(ASP.NET 状态服务)

---------------------------------------------------------------------------

(3)、SQLServer(保存在数据库中)
3.1使用aspnet_regsql.exe运行Session数据库脚本(在C:\Windows\Microsoft.NET\Framework\v4.0.30319这个路径中):
临时储存区:InstallSqlState.sql & UninstallSqlState.sql(保存在数据库中的临时表中,当数据库服务停止的时候,这张表就没有了)

对应的sessionstate: <sessionState mode="SQLServer" sqlConnectionString="server=.\sqlexpress;uid=sa;pwd=sa" ></sessionState>


永久储存区:InstallPersistSqlState.sql & UninstallPersistSqlState.sql(需要使用SQLServerAgent服务-因为调度作业)

注意:之后配置数据库权限麻烦的话,可以在运行完aspnet_regsql.exe后在数据库中执行你想要使用的sql脚本,就可以不配置权限了。

原文地址:https://www.cnblogs.com/La5DotNet/p/2476092.html