如果被缓存了,如果我在多级文件夹中使用多个web.config会发生什么
它们都被缓存。
配置只在启动时读取一次。对于web.config文件,IIS会监视文件更改并重启应用程序。
好的,你们都忽略了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
应用程序加载时会读取Web.config文件(不包括外部配置文件)。一些配置设置具有级联行为。例如,system.web/authorization部分可以被更深层次的配置所覆盖。
ASP.NET会监视web.config文件以进行更改。当它发生更改时,Web应用程序将被强制重新启动。因此,Web.config设置在应用程序的生命周期内都会被缓存。