应当如何理解session?

应当如何理解session? session对象是存储在服务器端,还是像cookies一样存储在客户端?
[52 byte] By [funing-业精于勤] at [2008-2-12]
# 1
session存储在服务器段,你可以把他理解为一个用来存放数据的容器。
# 2
Session有三种存储模式,都是在服务器端,详细看
http://www.eggheadcafe.com/articles/20021016.asp
hychieftain-不同 at 2007-11-1 > top of Msdn China Tech,.NET技术,ASP.NET...
# 3
不全对,Session是存放在服务器端是对的,但一部份Session信息还是存在COOKIES中.

你可以做一个实验,将你本地COOKIES禁用,看看还来不来访问Session
smilnet-笨笨 at 2007-11-1 > top of Msdn China Tech,.NET技术,ASP.NET...
# 4
你就把它认为是 对一个用户来说的全局变量。
vzxq-灵感人 at 2007-11-1 > top of Msdn China Tech,.NET技术,ASP.NET...
# 5
都是通过服务器和客户端共享字段来实现交互得,你把客户端cookies禁止了,当然无共享字段了
# 6
session能存储任意类型的信息,它的信息是存储在服务器上,但是还有一个session ID在访问者的机器上存储为cookie,这个ID是可以识别服务器上的会话,所以允许会话在多个页面的维护
wildwolfwy-纸风筝 at 2007-11-1 > top of Msdn China Tech,.NET技术,ASP.NET...
# 7
Session状态是在客户登录的时候创建的,它保存了客户特定的信息,并以Session ID来标识。当一个新客户访问应用程序时,先生成一个新的Session ID(或是Session Key),并为同一个客户接下来的请求创建联系。你可以在Session State中存储任意类型的数据,作为你的应用,状态被同一个进程和AppDomain(App域)维护。Session State的特点是为每一个特定的客户创建状态以维护客户的信息,这些状态信息存储在服务器端的默认的会话状态配置中。

Session(“Value”) = expr ; // Storing the data into session object
SomeFunction()
{
int expr = Int32.Parse(Session(“Value”));//Accessing from it
if (expr>=something)
{
//do something
}
Else
{
//do something else
}
//Some other thing goes here
}

既然Session State针对特定的客户建立,通过它来识别客户的请求。Asp.Net提供了一种加密机制和编码算法生成自己的Session Key。这是非常必要的,因为知道了你的Session Key,就有权限访问指定的页面了。

在ASP.Net中生成Session Key的方法:

byte[] sessionkey = new byte[15];

//Generates a random number
RNGCryptoServiceProvider rngkey = new RNGCryptoServiceProvider ();
rngkey.GetBytes (sessionkey);
string clientsessionKey = SessionId.Encode (sessionkey);

但是Session和客户端的Cookie是有关的,当客户关掉Cookie时,Session就失效了。不过在ASP.Net
中可以在web.config中修改设置,使Session的传递脱离Cookie。方法是:
<configuration>
<system.web>
<sessionState cookieless="true" />
</system.web>
</configuration>
liulxmooo-娃娃 at 2007-11-1 > top of Msdn China Tech,.NET技术,ASP.NET...
# 8
to smilnet(笨笨)
禁止也能访问Session,在web.config里设置<sessionState cookieless="true />即可
hychieftain-不同 at 2007-11-1 > top of Msdn China Tech,.NET技术,ASP.NET...
# 9
可以分开ASP和ASP.NET的Session来看
ASP的Session有二个致命的不足:
1.ASP的Session保存在内存中,这意味着它不兼容于web Farm --- 作为Web服务器群集之一 ---- 而且如果IIS被重启或服务器被重启动,Session也会被毁坏。
2.ASP的Session依赖cookie将用户与Session相联。如果用户不启用他的浏览器的Cookie,ASP Web服务器就没有能力将传入请求映射到Session

ASP.NET的Session更周全、更稳定、而没有ASP的Session的这二个缺点。支持各种存储模式,还为不支持Cookie的考虑,支持无Cookie值操作。
hychieftain-不同 at 2007-11-1 > top of Msdn China Tech,.NET技术,ASP.NET...