我在页面类中定义的静态变量中持有一些信息(不在Global.asax中).我只在代码中声明变量,如:
protected static int SomeGlobalUnsecureID;
protected static string SomeGlobalUnsecureString;
Run Code Online (Sandbox Code Playgroud)
并在PageLoad事件中定义变量.例如,我检查数据库中的ID,如果它与SomeGlobalUnsecureID不同,我从其他地方更新SomeGlobalUnsecureID和String,否则保持不变.这在我的应用程序中非常安全.逻辑(即那些数据不安全,每个人都可以访问它们,没问题); 我唯一想做的就是
无论用户连接如何,都要保持相同的内存量
当且仅当持久性信息与'memory'中的持久信息不同时才会改变(因为实际读取字符串对我来说非常耗时.
现在,因为我在PageLoad中进行了检查,所以在重新加载的页面中没有问题.然而,我的页面充满了WebMethods,有时我看到静态变量被归零.奇怪的是; 即使静态变量归零,会话仍然处于活动状态(所以 - >没有服务器或应用程序池重启等)
这对我来说真的很奇怪.我假设静态变量将保持其值,直到应用程序(以某种方式)结束.但即使Session没有过期,静态变量也会归零.你有什么建议?使用应用程序变量是更好的选择吗?我在网上看到的所有文件都提出了静态变量而不是应用程序变量,我是否需要声明它们有所不同?