Elmah.config 更新是否会重启 IIS?

Do Elmah.config updates restart IIS?

这似乎是一个相对简单的问题,但我在查看的文档中没有看到明确说明。假设在 Windows Server 2012/IIS 7 网络服务器安装上使用典型的 Elmah,如果 Elmah web.config 设置指向 Elmah.config 文件,将在 [=16] 下更改该文件触发器=] 应用程序导致 IIS 重新启动?

否:直接来自 MSDN:

保存 Web.config 文件会重新启动应用程序。您也可以使用各个部分元素的 configSource 属性指向辅助配置文件,该文件在更改时不会导致应用程序重新启动。有关详细信息,请参阅部分元素继承的常规属性中的 configSource。

MSDN

虽然 Josh 提供的答案通常是正确的,但 ELMAH 的情况并非如此。 ELMAH 每次需要时都会实例化一个新的错误日志实现,从 web.config 或提供的 configSource 中读取配置。

你可以做一个简单的测试来证明这一点。如果您将 ELMAH 配置为对 errorLog 元素使用外部配置文件,如下所示:

<elmah>
  <errorLog configSource="elmah.config"/>
</elmah>

你的 elmah.config 看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/App_Data" />

当您启动项目并强制出错时,一个新的XML文件被写入App_Data文件夹。像这样更改 logPath(无需重新启动应用程序):

<?xml version="1.0" encoding="utf-8"?>
<errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/App_Data2" />

(我改成了App_Data2).

强制执行新错误,您现在将看到 ELMAH 在文件系统上创建 App_Data2 文件夹。