是否建议在Session中保存对象?

时间:2014-06-01 09:32:37

标签: c# asp.net session

我有一个ASP.NET Web应用程序,我正在考虑在Session中保存整个对象User,而不是只保存UserId

是否推荐?它会导致低性能吗?

2 个答案:

答案 0 :(得分:2)

不,在Session中保存整个User对象而不仅仅是UserId不会导致性能问题。实际上,由于您在Session中拥有整个Object,因此您可以不再需要从数据库中获取它,因此可以提高性能。

就“推荐”而言?嗯,这取决于。

使用会话意味着您的网站现在将依赖于该“状态”。因此,如果您有多个具有负载平衡的Web服务器,则可能会遇到客户转到一个服务器然后转到另一个服务器的请求的问题。 (会话按服务器存储,不共享。)

我个人会说: 如果您的站点很小并且不需要扩展到多个服务器,那么请继续使用它。

答案 1 :(得分:1)

我同意之前的回答。如果你有 小网站和用户数量有限, 最好将用户保存在会话对象中。

在会话中保存时,可以配置会话的存储库类型, 它也可以是内存/ SQL。

我记得默认是记忆,如果你 有足够的用户可能会导致一些问题。

考虑使用缓存对象,您可以在其中存储用户ID和用户对象。