我正在开发一个我已经使用了多年的系统的修订版,但它具有.NET功能的所有优势,而这些优势在我第一次开发时并不存在。
事实证明,这是一条陡峭的学习曲线!
因此,当用户通过我的Login.aspx页面登录时,该页面只需将用户名/密码与数据库记录进行比较,系统就会创建一个包含用户用户名和其他各种内容的会话变量。
有两种类型的变量,这将是该系统的所有元素所共有的
- 用户特定数据、用户名、权限等
- 从系统中设置的预设设施数据库中提取的设置变量,有些将决定哪些设施工作,它们如何工作,有些则取决于用户的权限
显然,我可以设置会话数据中的所有内容,但这效率很低,不是吗?
如果我要在App_Code中设置这些全局可用的变量,我将如何进行设置,以便(例如(在登录会话期间设置那些需要数据库调用的变量,并且不需要持续的数据库查找?
此外,那些依赖于会话状态的变量需要在每次注销时清除。
我正在使用VB.NET.
在大多数情况下,使用全局变量不是一个好主意。在网络应用程序中,全局变量甚至更糟,因为网络应用程序的内在多重性。您必须为每个用户维护一组vars,而这正是会话状态的构建目的!
那么,为什么要麻烦使用会话状态呢?毕竟,它(默认情况下(只是一些内存中的数据集合,通过ASP.NET框架为您神奇地绑定到单个用户会话。
除此之外,那些依赖于会话状态的变量将需要在每次注销时清除。
当使用会话状态时,即使是Session.Abandon()
也可以在一行中完成。
在缓存不依赖于用户的数据时,最好按照Tim的建议使用ASP.NET缓存。