3

我需要在我目前正在处理的项目中实现几个应用程序级别的行为。有几件事我需要弄清楚: 1. 我在哪里以及如何定义应用程序级变量?2. 这些变量的生命周期是多少?或者更准确地说,在什么情况下它们会被丢弃?(应用程序池回收?应用程序二进制文件从内存中删除并在下一个请求时重新编译?等等。) 3. global.asax 文件是放置会话计数器的好地方,还是将值存储到数据库/文件更好持久化这种数据的方式?

欢迎任何意见或想法。谢谢!-埃拉德

4

1 回答 1

3

应用程序级变量具有应用程序生命周期。这意味着应用程序池被回收,它们被丢弃。
应用程序池可以出于不同的原因被回收。可以配置 IIS 6/7,以便应用程序池在一定时间后、在一定数量的请求后或在指定的时间间隔后回收。您可以这样设置应用程序变量:

Application["DbConfig"] = "my value";

但是如果您尝试在不同的地方设置/访问,您必须注意可能遇到的问题。您必须采用一种方法在变量更新时锁定它们。

我使用web.config了所有配置参数,然后我创建了自己的类来存储应用程序字段:

namespace Web.My
{
    public class Application
    {
        public static string ApplicationStorageFolder
        {
            get
            {
                return (System.IO.Path.Combine(HttpContext.Current.Server.MapPath("~"), "_AppStorage"));
            }
        }
    }
}

如果我需要设置一些字段,我会在应用程序启动时进行。Application_Start 如果您需要保留信息,您可以创建自己的配置文件(xml 或简单文本)来存储和读取应用程序启动和关闭时的值。您可以在 XML 文件中序列化您的类,以便准备好它,轻松地重新填充您的属性。一个数据库也可以。我会对会话计数器做同样的事情。

于 2011-04-05T08:00:50.507 回答