更改AppSetting对应用程序没有影响

Chi*_*hah 4 c# asp.net

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

public static class AppSettingsUtil
{
      public static string Log4Net
      {
          get
          {
              return ConfigurationManager.AppSettings["Log4Net"];
          }
      }
}
Run Code Online (Sandbox Code Playgroud)

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

Ed *_*gne 11

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

如果您使用:

<appSettings file="AppSettings.config" />
Run Code Online (Sandbox Code Playgroud)

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

但如果你把它改为:

<appSettings configSource="AppSettings.config" />
Run Code Online (Sandbox Code Playgroud)

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

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

  • 有一点需要注意.如果使用configSource,则不能在web.config的appSettings部分中包含任何条目.仅在您的外部文件中.如果您使用file =方法,那么您可以在两个位置都有条目...但您必须重新启动IIS(或更改web.config)才能读取外部文件. (2认同)