web.config或app.config是否在内存中缓存

时间:2010-08-25 14:39:45

标签: asp.net

如果它被缓存,如果我在多级文件夹中使用多个web.config会发生什么

3 个答案:

答案 0 :(得分:17)

他们都被缓存了。

配置在启动时读取一次。使用web.config,IIS会监视文件更改并重新启动应用程序。

答案 1 :(得分:9)

好的,所以你会错过Web.Config文件区域中的KEY功能。

是, web.config 已缓存,更改文件内容将重新启动您的网络应用。而且,所有关联用户 也不会感到满意 ,因为他们需要“重新连接”一个新的,可能会丢失所需的信息。

因此,请为AppSettings使用EXTERNAL自定义文件,如下所示:

<appSettings configSource="MyCustom_AppSettings.config"/>

然后,在 MyCustom_AppSettings.config文件文件中,您有自己的设置,因此此示例包含:

<appSettings>

  <!--   AppSecurity Settings   -->
  <add key="AppStatus_Active" value="Active"/>

  <!--   Application Info Settings   -->
  <add key="AppID" value="25"/>
  <add key="AppName" value="MyCoolApp"/>
  <add key="AppVersion" value="20120307_162344"/>
</appSettings>

现在,如果您需要添加,更改或删除AppSetting,当您在此文件中更改它时,您的网络应用中的更改几乎是即时(这里是最佳部分),您的应用无法重新启动

除了您在外部.config文件中添加/修改/删除的设置外,一切都保持犹豫不决。

而且,是的,相同的事情可以为该部分完成如下:

<connectionStrings configSource="MyCustomApp_ConnectionStrings.config"/>

文件 MyCustomApp_ConnectionStrings.config 包含您需要的所有连接字符串。更改外部.config文件中的连接字符串,它立即开始使用,没有重新启动Web应用程序。

当您需要在不同的盒子上部署开发,测试和生产并需要与给定的盒子/环境相关的设置时,configSource设置非常棒。

所以,现在你知道了(已经存在了7年多的事情)。

就这么简单。真。

KC

答案 2 :(得分:4)

加载应用程序时会读取Web.config(不包括外部配置文件)。某些配置设置具有级联行为。例如,system.web / authorization部分可以被更深层次的配置覆盖。

ASP.NET监视web.config以获取更改。当它发生更改时,Web应用程序将被强制重新启动。道德是web.config设置在应用程序的生命周期中被缓存。