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

13

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

3个回答

17

它们都被缓存。

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


11

好的,你们都忽略了Web.Config文件中区域的一个关键功能。

是的,web.config被缓存了,更改文件内容将导致Web应用程序重新启动。并且,所有连接的用户将不会感到高兴,因为他们需要“重新连接”,可能会丢失所需信息。

因此,为您的AppSettings使用一个外部自定义文件,如下所示:

<appSettings configSource="MyCustom_AppSettings.config"/>

接下来,在文件MyCustom_AppSettings.config file中,您可以找到以下设置:

<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>

现在,如果您需要添加、更改或删除应用程序设置,在此文件中进行更改后,您的Web应用程序中几乎立即就会反映出这些更改,(这是最好的部分),您的应用程序不会重新启动

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

是的,同样的事情也可以针对section完成:

<connectionStrings configSource="MyCustomApp_ConnectionStrings.config"/>

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

当你需要在不同的环境(如开发、测试和生产)上部署并需要该特定环境相关的设置时,configSource 设置非常有用。

现在你知道了(这个功能已经存在了 7 年以上)。

就是这么简单。真的。

KC


太有帮助了! - Pecheneg

4

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

ASP.NET会监视web.config文件以进行更改。当它发生更改时,Web应用程序将被强制重新启动。因此,Web.config设置在应用程序的生命周期内都会被缓存。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接