你能告诉我,当我们在IIS服务器上编辑Web.config(在运行时)会发生什么?

你能告诉我,当我们在IIS服务器上编辑Web.config(在运行时)会发生什么。

依赖于web.config的应用程序是否自动重启? 如果是,是否可以取消自动重启(或重新加载web.config)?

无论何时触摸“web.config”,ASP.NET AppDomain都会重新启动。 可以closures文件夹的文件更改通知(FCN),但通常情况下不是最好的select。 如果将其closures,则意味着您需要手动回收应用程序池才能使更改生效。

在IIS7之前,只有ASP.NET的更改会导致AppDomain的回收,但是IIS7和web.config中的许多设置都是一个更常见的问题。 即更改IIS 7pipe理器中的默认文档将导致该AppDomain现在回收。

理想情况下,您只需要保持较低的更改速率,或者有时将更改应用于applicationHost.config(不会导致AppDomain回收)而不是web.config。

使用web.config的应用程序将在您更改时重新启动,这里有更多信息:

http://msdn.microsoft.com/en-us/library/ms178473.aspx

我不知道有什么办法来防止这种情况的发生(我不知道为什么你会想要 – 也许你可以提供一些你想要实现的更多细节)。

仅供参考 – 在ASP.NET 2.0中,您可以使用内置的运行状况监视事件logging应用程序重新启动以及重新启动的原因。 这将使您能够清楚logging发生的时间和频率。 这是通过编辑机器的主web.config来完成的。

了解更多信息:

http://blogs.msdn.com/tess/archive/2006/08/02/asp-net-case-study-lost-session-variables-and-appdomain-recycles.aspx

[只是注意]

我知道这是一个古老的,但这仍然值得注意。

Scott Forsyth – MVP答案不正确。

无论何时触摸“web.config”,ASP.NET AppDomain都会重新启动。

这是错误的。


拂尘答案是技术上最正确和完整的答案,因为它包括一个MSDN链接 ,其中包括一个重要的细节:

当需要重新启动应用程序时,ASP.NET将在重新启动应用程序域并加载新程序集之前,处理来自现有应用程序域和旧程序集的所有未决请求。

当我们谈论Web服务时,这一点特别重要。 这表明安全地进行中午重启可能没有问题。