我有一个使用一些配置设置的扩展方法。我已将它们声明为 static
。
public static class Extensions
{
static string _mailServer = ConfigurationManager.AppSettings["MailServer"];
// ... etc
public static void SendEmailConfirmation(this IOrder order) { }
}
我只是想检查这是否按照我的意图进行,因为我不能 100% 确定。我的想法是我不想一直读取这些值,我希望它们被读取一次并在 Web 应用程序的生命周期内缓存。这是会发生什么吗?谢谢
最佳答案
(更新了 KeithS 的澄清,即它们在首次使用之前不会被阅读)
它们将在第一次使用时被读取,然后保留直到 AppDomain 停止或回收,这可能是您想要的。
也就是说,ASP.NET 应用程序在 AppDomain 中运行。这就是它们驻留并可用于多个请求而无需为每个单独的请求启动的方式。您可以配置它们的生存时间和回收时间等。静态变量与应用程序一起生存和死亡,因此只要应用程序驻留在应用程序域中,静态变量就会生存。
关于c# - .NET 中静态变量的生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3814608/