似乎有很多方法,但没有默认。对于状态管理,ASP.NET默认使用cookie吗?
如果是这样,使用Cookie的替代方法是什么?
如果没有,ASP.NET默认使用什么来管理状态?
答案 0 :(得分:4)
是 - 默认情况下,ASP.NET使用cookie来维护会话。
也就是说,客户端上存储了一个唯一的“会话标识符”cookie,用于跟踪服务器上的会话(状态服务,sql db等)。
但是在web.config中,您可以将cookieless设置为true:
<sessionState mode="InProc" cookieless="true" timeout="20" />
这会导致非常相同的“会话标识符”卡在URL中,并且不会使用任何cookie。
不要混淆 - cookies不存储实际的“会话”。听起来你认为cookie可以用作ASP.NET状态服务之类的替代品。
实际上,cookie只存储一个标识符以“跟踪”会话,换句话说 - 这个“标识符”在每个HTTP请求的客户端 - 服务器之间传递,这样服务器就可以同步一个特定的会话项目与其所属的客户端。
基于Cookie的/无Cookie会话无法实现您所拥有的实际状态存储机制 - 无论是在进程中会话,ASP.NET状态服务还是SQL Server。它只是规定了允许服务器跟踪会话的方式。
当然,无cookie会话将适合可能会关闭cookie的客户端,但缺点是你有丑陋的URL,但这可以通过URL重写很容易否定 虽然我建议不要这样做 - 许多人都试图这样做。
HTH