gpt4 book ai didi

c# - 是否可以在 C# 中遍历存储在服务器上的所有 session

转载 作者:太空狗 更新时间:2023-10-29 22:01:22 27 4
gpt4 key购买 nike

我正在使用 ASP.NET 框架(带有 C#),并为每个用户创建 session 变量。是否可以遍历所有已初始化的 session 。在此迭代中,我还想更改某些 session 的某些属性。

我正在尝试更改存储在 session 变量中的一些数据。我有我想为其更改 session 的特定用户的 session ID,因此我还需要能够比较这些 ID。

最佳答案

我不确定是否有任何框架类来处理这个问题,但是如果你真的需要循环遍历为每个请求在 IIS 服务器上创建的 session ,为什么不将每个 session 存储在你自己可以访问的集合对象中从你的代码?例如,在 global.asax 文件中,您可以在 Session_Start 事件中添加自己的代码,以将特定 session 保存到您的列表中。您将必须检查 session 是否为新 session ,这可以通过 Session.IsNewSession 属性来完成。每次创建新 session 时,都会触发 Global.asax 中的 Session_Start 事件。

但是如果您在 session 超时或结束时不从列表中删除 session ,则可能会出现问题,所以我可能会这样做:

  • 在 Session_Start 事件中,检查 this.Session.IsNewSession bool 值

  • 如果 Session.IsNewSession 为真,则获取当前 session (使用 this.Session,因为 Global.asax 在其上下文中有当前新 session ),并将其保存在 Dictionary 对象中,键为 Session.SessionId .

  • 这将为在服务器中创建的每个 session 创建一个唯一的 key 对集合。

  • 在 Session_End 事件中,获取当前 session (this.Session) 的 Session.SessionID 属性,即已结束的 session 。

  • 使用完成的Session值的Session.SessionID去除包含Session的Dictionary中的键值对。

一旦此基础架构就位,并且 Dictionary 对象驻留在您的应用程序代码可以访问的位置,您可以检索此字典并遍历它以在该时间点在服务器中激活 session 。

关于c# - 是否可以在 C# 中遍历存储在服务器上的所有 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13259394/

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