gpt4 book ai didi

c# - 使用 Session 与 Static 类来保存用户数据

转载 作者:太空狗 更新时间:2023-10-30 01:24:40 24 4
gpt4 key购买 nike

我正在开发一个使用 C# 后端的 ASP.NET 网站。 De webserver 在远程服务器上运行,因为我需要位于客户端 pc 上的一些数据(例如:用户 id),我编写了一个客户端和服务器应用程序。因此,当用户启动客户端应用程序时,它会连接到网络服务器但尚未加载页面,网络服务器会启动我的服务器,向客户端请求一些数据。客户端响应后,服务器拥有所需的数据并为客户端加载网页。

为了方便地访问用户的一些属性,我想使用 Session 变量。但是当客户端将其数据发送到服务器时,Session 变量还不可用。当我尝试访问它时,我得到一个 NullReferenceException。我相信这是因为 Application_AcquireRequestState 事件尚未触发(位于 Global.asax.cs 中)。因为需要用到客户端的数据,所以我把它保存在一个静态类中,方便随时访问。

有更好的解决方案吗?我想到等待 Application_PostAcquireRequestState 事件触发,因为我认为 Session 变量在那个时候是可用的。这样我就可以将静态类中的数据加载到用户的 session 变量中。这是个好主意,还是我应该坚持目前的情况(静态类)?因为它有效,但感觉并不是执行此操作的最佳方法。

提前致谢!

最佳答案

session 状态对于每个用户 session 数据来说已经足够好了。

不要触及静态,这些是进程中每个 AppDomain 的范围。 IIS 将在您不知情的情况下回收 AppDomain,将您的静态变量装箱。

更新:为了清楚起见,以下问题/答案解释了 Session 将为空的情况:

What should I do if the current ASP.NET session is null?

如果您的应用程序属于上述情况之一,这显然会使 session 状态不适合。

关于c# - 使用 Session 与 Static 类来保存用户数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8741164/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com