ASP.NET Session篇

1. Session 丢失问题

先看下 Session 的存储方式 asp.net有3种存储方式,:inproc, sqlserver,stateserver

在哪里设置呢 “web.config” 中有

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

Off  不使用Session功能
InProc  将Session存储在进程内,就是ASP中的存储方式,这是默认值。
StateServer 将Session存储在独立的状态服务中。
SQLServer  将Session存储在SQL Server中。

可选的属性:

cookieless  :客户端是否以cookie的方式存储session 
ture  使用Cookieless模式 不以cookie的方式存储,

注意:如果不以cookie的方式存储,客户端是如何判断用户是否登录的呢,“url”,ASP.NET 将session通过url地址传递给浏览器客户端。

例如:  )                                                              
false 使用Cookie模式,这是默认值。 使用cookie时就不需要改变URL地址了。


timeout  经过多少分钟后Session会删除。默认为30分钟 ,即session超时时间


stateConnectionString 设置将Session信息存储在状态服务中时使用的服务器名称和端口号,例如:"tcpip=127.0.0.1:42424”。当mode的值是StateServer是,这个属性是必需的。

特别说一下这个状态服务:Session默认存储在InProc 中即ASP.NET进程中,一旦进程出现问题 Session就会丢失,所有我们通常不选择默认的存储方式,剩下的几种,个人认为比较简单的还是通过状态服务控制,

这里所谓的服务在哪里呢:下图 服务-ASP.NET状态服务,如果使用该服务控制Session则需将服务设置为自动启动,TCPID:127.0.0.1 后面的42424是默认端口,如果该端口不能用则需要修改注册表。

 
sqlConnectionString 设置与SQL Server连接时的连接字符串。例如"data source=localhost;Integrated Security=SSPI;Initial Catalog=northwind"。当mode的值是SQLServer时,这个属性是必需的。


stateNetworkTimeout 设置当使用StateServer模式存储Session状态时,经过多少秒空闲后,断开Web服务器与存储状态信息的服务器的TCP/IP连接的。默认值是10秒钟。

地址转移引发的的问题:

在浏览器中浏览时会自动增加session地址,即地址转移,但在socket通信(TCP)时会出现302错误 此时需要获取转移后的地址方能正确访问。

原文地址:https://www.cnblogs.com/merray/p/2689144.html