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