aspx 页面之外的共享属性的值是否对所有会话都是全局的?

Are the values of Shared Properties outside of aspx pages Global to all sessions?

请原谅,已经好几年了,我的搜索结果好坏参半。在传统的 .NET 表单应用程序中使用下面的 VB 代码,ClientKey 的值对于会话或应用程序域来说是全局的吗?

Public Class AuthenticationClient

    Private Shared Property ClientKey As String
        Get
            Return HttpContext.Current.Session("ClientKey")
        End Get
        Set(value As String)
            HttpContext.Current.Session("ClientKey") = value
        End Set
    End Property
   
  'The function below is called only once on the FormsAuth login page for each successful login attempt
   Public Shared Sub SetClientKeyForSession(clientKeyForSession As String)
       ClientKey = clientKeyForSession 
   End Sub


   'This can be called for multiple contacts
   Public Shared Async Sub SaveSomething(userId As Integer)
       Await SomeDataAccess.SaveThisAsync(userId, ClientKey) '<- Not Me.ClientKey but is it the same session value set at login, I assume yes.
   End Sub

....
End Class

Properties 只是获取和设置方法。它是由应用程序域共享的静态 字段 。由于您没有字段(仅在 get 和 set 方法中包装了一个会话变量),所有内容都限定在会话范围内。

请注意,automatic 属性(例如 VB 中的 Shared Property MyString As String)实际上会创建您看不到的支持字段。但这不是你在这里做的,所以没有创建支持字段,也没有使用静态数据。