Asp.net mvc 4 更改web.config的appSettings中的值时,在IIS中重新启动网站

Asp.net mvc 4 更改web.config的appSettings中的值时,在IIS中重新启动网站,asp.net-mvc-4,iis,web-config,appsettings,Asp.net Mvc 4,Iis,Web Config,Appsettings,为了安全起见,当我在Web.config中更改appSettings的值时,我总是重新启动网站,以便刷新所有更改。但我真的需要重新启动它吗?IIS是如何处理appSetting值的,是一次性读取值(启动应用程序后)还是每次客户端访问网站时IIS都读取值?实际上,需要重新启动的不是“网站”,而是“应用程序池”。记住IIS中的网站管道没有“可执行”代码,只有标记 但是,IIS将其视为“每个应用程序池”设置。在INETMGR中,打开任何应用程序池的属性并查找此设置:“禁用配置更改回收”(在“回收”设置

为了安全起见,当我在Web.config中更改appSettings的值时,我总是重新启动网站,以便刷新所有更改。但我真的需要重新启动它吗?IIS是如何处理appSetting值的,是一次性读取值(启动应用程序后)还是每次客户端访问网站时IIS都读取值?

实际上,需要重新启动的不是“网站”,而是“应用程序池”。记住IIS中的网站管道没有“可执行”代码,只有标记


但是,IIS将其视为“每个应用程序池”设置。在INETMGR中,打开任何应用程序池的属性并查找此设置:“禁用配置更改回收”(在“回收”设置组下)。如果将此设置为“True”,则IIS将不会监视该应用程序池的配置文件的配置更改,并且如果您编辑/更改某些内容,则不会重新启动应用程序池。但是,这意味着您必须手动回收——如果您正在更新网站并希望更改BIN文件夹和层次结构中的多个.config文件,这是一种有效的方案。在一个web.config文件的最低条件下,这是两个应用程序池重新启动。。一个用于BIN更改,另一个用于web.config

回答得好@Sujay,这意味着我不需要每次更改appconfig中的值时都重新启动我的网站。还有一个问题。IIS是一次性读取这些值并将其存储在内存中,还是每次客户端访问网站时都读取这些值?@rcadaoas:根据我所看到的行为,它作为监视程序实现,并在文件更改时执行重新加载。它还“似乎”有一种校验和类型的监视,因为有时我看到,如果您替换同一个文件(在BIN文件夹中重新复制同一个DLL),回收似乎不会发生。@SujaySarma:一个问题。在一个非常复杂的生产环境中,更改appsetting条目的值是否会导致服务器端出现问题?我的意思是,不是与价值相关的异常,回收应用程序池对事务来说是危险的,或者服务器可能无法重新启动?@Previous,应用程序池重新启动将导致所有新请求至少延迟几秒钟。@Sujay,我只是澄清一下,IIS无法判断您何时“完成”更改。如果要复制大量的bin文件(如使用预编译),它可能会重新启动很多次。删除站点中其他位置的文件也会导致重新启动。