2010-09-17 56 views

回答

4

是 - 默认情况下,ASP.NET使用cookie来维护会话。

也就是说,一个唯一的“会话标识符”cookie存储在客户端上,以跟踪服务器上的会话(状态服务,sql db等)。

但在web.config中,您可以设置Cookie的为true:

<sessionState mode="InProc" cookieless="true" timeout="20" /> 

这将导致同样的“会话标识符”被卡在URL中,并没有cookies将被使用。

不要混淆 - cookies不会存储实际的“会话”。这听起来像你认为cookie可以用来替代ASP.NET状态服务。

实际上,cookie只是存储一个标识符以便“跟踪”会话,换句话说,这个“标识符”是在每个HTTP请求的客户端服务器之间传递的,这样服务器就可以同步一个特定的会话项目与它所属的客户端。

基于Cookie的Cookie /无Cookie会话无法体现您使用的实际状态存储机制 - 无论是进程中会话,ASP.NET状态服务还是SQL Server。它只是规定了服务器被允许跟踪会话的方式。

当然,无Cookie会话将适合可能会关闭cookie的客户端,但缺点是您拥有丑陋的URL,但这可以通过使用URL重写相当容易 ,尽管我会建议不要这样做 - 许多人在尝试这样做时报告了问题。

HTH

+0

我不认为你可以重写URL查询数据从一个URL的.... – 2010-09-18 00:21:09

+0

@汤姆Gullen - 答案编辑。 =)你可以,但不容易,很多人都尝试失败了。 – RPM1984 2010-09-18 00:40:41