1

我们在 IIS7.5 中遇到了一个相当烦人的错误,它偶尔会删除 web.config 中标记的内容。它不只是在运行时删除内容,它实际上是在物理上更新文件。

在我们的本地机器上,当我们重建所有内容(包括从源代码管理替换 application.config)时会发生这种情况,而在我们的服务器机器上,它会在应用程序池重启时发生。这两种情况都是间歇性的。

这似乎正在发生,因为我们在配置的根目录中有一些配置,而在位置标签中有一些配置。我们这样做的原因是因为我们在根应用程序下面有一些虚拟应用程序,我们不希望它们继承处理程序和模块。我们有根 system.webserver 标记,因为我们想要继承一些设置(如 validateIntegratedModeConfiguration)。

它只影响不在位置标签内的 system.webserver 设置。如果您将所有内容都移到位置标签中,那很好。

我们的 web.config 看起来像这样:

<system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    ...
</system.webServer>
<location path="." inheritInChildApplications="false">
    <system.webServer>
      <modules>
        ...
      </modules>
      <handlers accessPolicy="Read, Script">
        ...
      </handlers>
    </system.webServer>
 </location>

还有其他人遇到这个问题吗?

4

1 回答 1

3

我们最终将配置从根 system.webserver 移到 location 标签内。然后我们还将它添加到所有子应用程序中。

<location path="." inheritInChildApplications="false">
    <system.webServer>
      <validation validateIntegratedModeConfiguration="false" />
      <modules>
        ...
      </modules>
      <handlers accessPolicy="Read, Script">
        ...
      </handlers>
    </system.webServer>
 </location>

虽然这不是一个理想的解决方法,但它已经解决了删除配置的问题。

于 2012-07-25T12:06:08.840 回答