在asp.net中从数据库添加会话变量的最佳方法是什么?

时间:2011-09-21 03:48:21

标签: asp.net session session-variables

在我的asp.net MVC应用程序中,我想添加一个变量(用户拥有的系统类型的标志),只要页面加载或用户执行某些操作就可以访问该变量。我决定为此添加一个会话变量(这看起来合理吗?),我只需要从数据库中的表中获取标志。我的计划是在Session_Start上设置变量,但这似乎不是正确的方法,因为我需要查询数据库,我不确定我是否应该从Global.asax。我应该在哪里填充这个变量?或者有更好的方法吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

会话变量是一个合理的选择,session_start可以是获取值的地方。但是,如果值是特定于用户的,那么在这种情况下,您需要用户身份。身份验证将建立用户的身份而不是会话启动(两者在ASP.NET中都是独立的) - 所以不是session_start,更好的赌注是Application_AcquireRequestState,你应该检查用户是否经过身份验证,如果是,然后检查您的会话变量是否已设置。如果未设置,则可以从数据库中获取值。

轻微的变化是按需加载,即创建一个包装器方法来获取标志值。包装器方法将检查是否已经检索了值 - 如果没有,则它将获取它并将值缓存在合适的存储中(例如,会话状态)。