我正在使用 Windows/Active Directory 身份验证的 ASP.NET (VB) Web 应用程序
我正在使用一个模块,这样我就可以调用公共子例程和函数以及引用变量,而不必实例化一个新对象来在每个页面上访问它们。
在该模块中,我在整个 Web 应用程序的多个页面中使用了一些公共变量。我最近意识到模块中这些公共变量的值在所有用户之间共享。
目标:我希望这些全局变量的值特定于单个用户,而不是在所有会话之间共享,并且我不想在每个使用该变量的页面上实例化一个新的对象/类。
问题:我不想将值存储在客户端变量中,例如 cookie 或会话。我希望将值存储在服务器上,但特定于每个客户端/用户。
我唯一能想到的就是设置一个全局集合/字典并使用经过身份验证的用户名存储变量,但是我需要有特定的函数来获取和设置值。虽然这会起作用,但它需要更新应用程序中所有页面上对这些变量的所有引用。
问题示例:下面的代码显示了我如何在模块中创建公共变量,以及如何从一个页面设置值并在另一个页面上使用。我想继续以同样的方式使用这个变量并在页面之间共享它的值,但是变量的值不需要在用户之间共享。
-- 模块.VB --
Public Module MyMod
Public myVariable as String = ""
End Module
-- 主页.VB --
Partial Class _Default
Sub Page_Load() Handles MyBase.Load()
myVariable = "HELLO WORLD"
End Sub
End Class
-- NEXTPAGE.VB --
Partial Class _Default
Sub Page_Load() Handles MyBase.Load()
Response.Write(myVariable)
End Sub
End Class
如果我必须使用我的用户 ID 索引集合解决方案,此应用程序中有很多页面需要手动更新,所以我希望有一种方法可以简单地以不同的方式限定这些变量或禁用共享会话之间。提前致谢!