0

我读过在 Session State 中存储信息对于可扩展性来说是个坏主意,但是如果 Session State 存储在 SQL 中而不是 Proc 中可以吗?

通常,当用户登录时,我将他们的 customerID 分配给一个会话变量,该变量几乎在每个页面上都用于为他们过滤信息。如果此 customerID 不在会话变量中,那么存储此 customerID 的最佳方法是什么。

我可以使用 User.Identity.Name 字段去查询数据库以获取 customerID,但我看不出有任何区别并将会话变量存储在 SQL 中。还有一种方法可以扩展 User.Identity 类以包含 CustomerID 变量吗?同样,我看不出这比仅存储会话变量有什么好处。

任何想法都非常欢迎!

4

1 回答 1

0

是的,你可以做所有这些事情。出于几个原因,不鼓励在 Session 中存储东西,而不仅仅是为了可伸缩性。一个原因是会话超时,用户可能仍处于登录状态。您始终可以检查变量是否为空并重新填充它,但您必须在每个页面上都这样做,或者创建一些您将拥有的辅助方法调用表单每一页。

SQL 会话要慢得多,并且需要对每个请求进行数据库查找。所以这是避免它们的原因之一。

您可以在全局操作过滤器之类的东西中查找 ID,但同样,这会导致对每个请求进行数据库查找。

另一种选择是扩展 IIdentity 接口(即 User.Identity 对象)以添加 CustomerID。如果你用谷歌搜索“IIdentity MVC”,就会有各种各样的例子

于 2012-10-13T10:57:15.390 回答