system.webserver中的设置有时会从web.config文件中删除

时间:2012-07-19 14:03:13

标签: asp.net iis-7 web-config iis-7.5 config

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

在我们的本地计算机上,当我们重建所有内容时(包括从源代码控制中替换application.config),在我们的服务器上,它会在应用程序池重启时发生。两种情况都是断断续续的。

似乎正在发生,因为我们在配置的根目录中有一些配置,而在位置标记中有一些配置。我们这样做的原因是因为我们在根应用程序下面有一些虚拟应用程序,我们不希望它们继承处理程序和模块。我们有root 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>

其他人遇到过这个问题吗?

1 个答案:

答案 0 :(得分:2)

我们最终将配置移出根系统.webserver并进入位置标记内的配置。然后我们还将它添加到所有子应用程序中。

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

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