默认情况下,ASP.NET 会将会话信息存储在工作进程(InProc)内部的内存中,通常为w3wp.exe。还有其他存储会话的模式,例如 Out of Proc 和 SQL Server。
ASP.NET 默认使用 cookie;但如果你真的需要,可以配置为“无 cookie”;而是将您的会话 ID 存储在 URL 本身中。这通常有几个缺点;例如链接的维护变得困难,人们为具有过期会话 ID 的 URL 添加书签(因此您需要处理过期的会话 ID 等)。大多数现代手机,甚至是 non-smart 手机,都支持 cookies。较旧的手机可能没有。您是否需要支持无 cookie 会话取决于您自己。
5 回答
在 ASP.NET;你有一个会话 cookie。此 cookie 用于标识哪个会话是您的;但实际上并不包含会话信息。
默认情况下,ASP.NET 会将会话信息存储在工作进程(InProc)内部的内存中,通常为
w3wp.exe
。还有其他存储会话的模式,例如 Out of Proc 和 SQL Server。ASP.NET 默认使用 cookie;但如果你真的需要,可以配置为“无 cookie”;而是将您的会话 ID 存储在 URL 本身中。这通常有几个缺点;例如链接的维护变得困难,人们为具有过期会话 ID 的 URL 添加书签(因此您需要处理过期的会话 ID 等)。大多数现代手机,甚至是 non-smart 手机,都支持 cookies。较旧的手机可能没有。您是否需要支持无 cookie 会话取决于您自己。
如果您的网址如下所示:
无 cookie 的 URL 如下所示:
其中
lit3py55t21z5v55vlm25s55
是会话 ID。您可以详细了解 ASP.NET 的会话状态这里
会话数据存储在服务器上,但它还在 cookie 中存储 id 字符串以标识用户。
如果不支持 cookie,则无法存储 id 字符串,并且当用户发出另一个请求时,服务器无法配对会话。
会话 ID 只是服务器生成的数字(来自计数器或随机),因此它不包含您存储在会话对象中的数据的任何信息。
(该应用程序还可以配置为将会话放在 URL 而不是 cookie 中.这使您可以使用没有 cookie 的会话,但它会破坏你的好 URLs.)
如今它可以是两者。
服务器会话
服务器端会话已在其他帖子中解释过。会话存储在服务器上,但它需要一个 cookie 来存储指示谁正在请求会话值。
客户会话
由W3C定义的 WebStorage 的新概念显示了如何需要客户端会话。这是 WebStorage 的 HTML5 实现:https://code.google.com/p/sessionstorage/
这在某些方面是一个棘手的问题,因为它有点兼顾。
会话状态本身存储在服务器上。但是,您需要在客户端上使用某种类型的指示器才能使用它。通常,这是一个服务器 cookie,它非常薄,基本上是会话的 GUID,仅此而已。但是,您可以设置站点以在 URI 中传递会话 ID,因此它不必是 cookie。
不确定手机如何处理会话 cookie 概念,但由于我可以登录,并且在 URI 中看不到 ID,我认为有一种机制,即使它不处理用户 cookie。
会话 ID 默认存储为 cookie。您还可以将会话配置为将其 id 作为查询参数传递(“cookieless”)。