我有一个使用一些配置设置的扩展方法。我已将这些声明为static
。
public static class Extensions
{
static string _mailServer = ConfigurationManager.AppSettings["MailServer"];
// ... etc
public static void SendEmailConfirmation(this IOrder order) { }
}
我只是想检查一下这是否符合我的意图,因为我并不是百分之百确定。我的想法是,我不想继续阅读这些值,我希望它们能够被读取一次,并在Web应用程序的生命周期中进行缓存。这会发生什么?感谢
答案 0 :(得分:16)
(根据KeithS的澄清更新,直到第一次使用才能阅读)
它们将在第一次使用时被读取,然后保留,直到AppDomain停止或回收,这可能是你想要的。
也就是说,ASP.NET应用程序在AppDomain中运行。这就是它们如何驻留并可用于多个请求,而无需为每个单独的请求启动。您可以配置它们的生存时间和回收时间等。静态变量与应用程序一起生存和死亡,因此只要应用程序驻留在应用程序域中,它就会存在。
答案 1 :(得分:1)
_mailServer
将在第一次使用Extensions类时进行初始化(以任何方式)。在重新加载应用域之前,不会再次设置它。
答案 2 :(得分:1)
它们将在第一次需要时加载,然后保留在内存中,直到IIS回收应用程序。