You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

类文件中访问的Session始终为首个登录用户的Session是什么原因?

问题成因

核心问题出在Portal.User类中ID字段的Shared修饰符和内联初始化写法:

  • VB.NET中Shared修饰的类成员属于类全局共享资源,在整个Web应用的应用程序域生命周期内只会初始化一次。
  • 你采用的Public Shared ID As Integer = HttpContext.Current.Session("ID")内联初始化逻辑,仅会在首次访问Portal.User.ID时执行一次,此时取到的是当日首个用户请求上下文中的Session ID值,之后该值会被缓存下来。
  • 后续所有用户访问Portal.User.ID时,不会重新触发从Session取值的逻辑,直接返回第一次初始化的固定值,因此所有用户拿到的都是首个用户的ID。
修复方案

将固定的Shared字段改为每次访问时实时取值的只读属性即可:

Public Class Portal
    Public Class User
        Public Shared ReadOnly Property ID As Integer
            Get
                Return HttpContext.Current.Session("ID")
            End Get
        End Property
    End Class
End Class

内容的提问来源于stack exchange,提问作者brasco18

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 23:06:04