你能在asp.net中创建持久的全局变量吗?

时间:2015-09-06 00:26:58

标签: asp.net vb.net

我刚才了解到,由于IIS的性质,后台线程在asp.net中无法被信任,它们可以随时擦除。

问题是,对于我在类中作为共享字段声明的全局变量是否也是如此?我不知道如何测试,因为我还没有看到消失的线程,但认为如果一个可以发生,另一个也可能发生。

作为一个更具体的例子,假设我有这个类:

Public Class DataHolder
    Public Shared data1 As String
    Public Shared data2 As String

    Shared Sub New()
        Dim fdat = IO.File.ReadAllLines(System.Web.HttpRuntime.AppDomainAppPath & "localcache.txt")
        data1 = fdat(0)
        data2 = fdat(1)
    End Sub
End Class

我希望从这个课程中得到两件事:

  1. data1和data2始终对应localcache.txt提供的值(它们不会被代码修改)
  2. data1和data2实际上是从内存中获取的,并且没有任何技巧,例如每次使用这些值时都运行构造函数来补偿没有真正的全局内存
  3. 这个班级能否符合这些标准?

1 个答案:

答案 0 :(得分:0)

IIS主要是基于请求的系统。如果没有活动(即没有正在进行的会话),它往往会关闭所有内容。

首次实例化类时,将调用共享构造函数。因此,只要不在共享构造函数之外修改这些共享变量,您所做的就会一致地工作。