更改AppSetting对Application不起作用

在我正在ASP.Net上开发的应用程序之一。 在这个应用程序中,我们一直在使用大量的AppSettings。 在最初的开发中,我们使用了ConfigurationManager.AppSettings [“”]。 但随着开发的进展,我们创建了一个实用程序类,我们在其中为每个AppSettings定义一个静态属性。 然后问题开始出现。 现在,当应用程序部署在测试服务器上并且我们更改AppSettings上的任何设置时,除非我们重新启动IIS,否则它没有任何效果。 这是我用来创建AppSettings的静态属性的以下代码片段。

public static class AppSettingsUtil { public static string Log4Net { get { return ConfigurationManager.AppSettings["Log4Net"]; } } } 

我能想到的原因之一是,它是一个静态属性,因此可以在其生命周期中初始化一次,因此下次可能无法从appsettings中获取值。

我知道这是一个旧线程,但需要添加一些内容。

如果您使用:

  

然后,在更改web.config或执行重新启动之前,对外部文件的更改将不可用。

但如果你把它改为:

  

您可以立即在代码中使用这些设置的更改,而无需重新启动或更改web.config。

我刚刚确认这是可重复测试的情况。

您显然正在部署配置文件,因为在重新启动IIS后,更新的配置可用。

听起来您正在为AppSettings使用外部文件:

  

这有利于保持web.config干净,特别是如果您为不同的环境(例如,dev,testing,prod)维护不同的配置文件。 但是,此方法的缺点是ASP.NET不会自动检测外部文件的更改,因此您的设置不会自动刷新。

根据MSDN ,在.NET Framework 2.0上更改为单独的文件不会导致后续应用程序重新启动。 听起来你的解决方案是在这种情况下不使用外部文件。

在不使用其中一个AOP框架的情况下,该上下文中的静态方法永远不会缓存来自配置的值。 更可能的情况是网站没有被编译并移动到框架目录中。 在个人方面,我更喜欢称该文件为Config.cs。