我需要在我正在处理的项目中实现几个应用程序级行为。 我需要掌握几件事情: 1.我在哪里以及如何定义应用程序级变量? 2.这些变量的生命周期是多少?或更准确地说,他们在什么情况下被丢弃了? (应用程序池回收?应用程序二进制文件从内存中删除并在下一个请求中重新编译?等等) 3. global.asax文件是放置会话计数器的好地方,还是将值存储到数据库/文件中是一种更好的方法来保存这种数据?
欢迎提出任何意见或建议。 谢谢! -Elad
答案 0 :(得分: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文件中序列化您的类,以便您可以轻松地重新填充属性。
db也可以。
我会对会话计数器做同样的事情。