global.asax 范围和生命周期澄清

2024-06-18

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

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


应用程序级变量具有应用程序生命周期。这意味着如果应用程序池被回收,它们就会被丢弃。
应用程序池可以因不同的原因而被回收。可以配置 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 文件中序列化您的类,以便您可以准备好它,轻松地重新填充您的属性。 一个 db 也可以。 我会对会话计数器做同样的事情。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

global.asax 范围和生命周期澄清 的相关文章

随机推荐