保存并从asp.net中的会话状态检索值

时间:2010-12-20 11:02:40

标签: c# asp.net

我正在审核一些网络代码,我不确定ASP.net会话状态是如何工作的。任何帮助将不胜感激。

如果在登录期间将User对象保存到会话状态,则设置User.FirstName和User.LastName。如果其他网页从会话中检索用户对象并将FirstName设置为其他网页上持久保存的内容?或者,您是否需要在修改后将用户对象重新添加回会话?感谢

3 个答案:

答案 0 :(得分:3)

会话在服务器上保留,但通过客户端跟踪。我再说一遍 - 通过客户。

在大多数情况下,会话使用Cookie进行跟踪。因此,使用您的示例,当User对象保存到Session:

Session["UserInfo"] = new User { FirstName = "Joe", LastName = "Bloggs" };

将使用唯一标识符将cookie发送到客户端。此cookie将传递给来自此客户端/浏览器的所有其他HTTP请求,除非它过期。

如果第一次有另一位用户(来自其他计算机),Session["UserInfo"]将为空。

Cookie的替代方法是“无cookie会话” - 而不是使用cookie来存储会话标识符 - 标识符被添加到URL上。

所以答案是否定的 - 其他网页(例如其他客户端/机器/浏览器)将无法访问此信息。

如果您想要从Web服务器的不同客户端共享信息,请使用缓存

但是考虑到问题的上下文(用户信息),将此信息存储在会话中是有效的,因为它仅与特定用户相关(不应共享)。

许多人使用的替代方法,而不是在会话中粘贴用户信息,是将其置于一个通用原则中,该原则附加到表单身份验证票证。

由您决定选择哪条道路。

答案 1 :(得分:2)

这可以帮助您了解ASP.Net中的Sessions

<击> http://www.codeproject.com/KB/aspnet/ExploringSession.aspx http://www.codeproject.com/Articles/32545/Exploring-Session-in-ASP-Net

答案 2 :(得分:1)

您对该对象所做的任何更改都会保留。