【问题标题】:How do you prevent the IIS default site web.config file being inherited by virtual directories?如何防止 IIS 默认站点 web.config 文件被虚拟目录继承?
【发布时间】:2010-09-07 10:56:19
【问题描述】:

我在默认 IIS 站点的 web.config 文件中有以下代码。

<httpModules>
    <add type="MDL.BexWebControls.Charts.ChartStreamHandler,Charts" name="ChartStreamHandler"/>
</httpModules>

然后当我设置并浏览到一个虚拟目录时,我得到了这个错误

无法加载文件或程序集“图表”或其依赖项之一。系统找不到指定的文件。

虚拟目录从默认的 web.config 继承模块。

如何阻止这种继承?

【问题讨论】:

    标签: .net asp.net configuration configuration-files


    【解决方案1】:

    我找到了答案。将 HttpModule 部分包裹在位置标签中,并将 inheritInChildApplications 属性设置为 false。

    <location path="." inheritInChildApplications="false">
      <system.web>
        <httpModules>
          <add type="MDL.BexWebControls.Charts.ChartStreamHandler,Charts" name="ChartStreamHandler"/>
        </httpModules>
      </system.web>
    </location>
    

    现在任何虚拟目录都不会继承此位置部分中的设置。

    @GateKiller 这不是另一个网站,它是一个虚拟目录,因此确实会发生继承。

    @petrich 我使用&lt;remove /&gt; 获得了成功和失败的结果。我必须记住将它添加到每个虚拟目录中,这很痛苦。

    【讨论】:

    • 是的,我也觉得这很痛苦。感谢您提供有关 inheritInChildApplications 的提示。
    【解决方案2】:

    According to Microsoft,其他网站不继承默认网站的设置。您的意思是您正在编辑与 machine.config 位于同一文件夹中的默认 web.config?

    【讨论】:

    • 我认为提问者正在谈论从它继承的站点的虚拟目录。
    【解决方案3】:

    将以下内容添加到虚拟目录的 web.config 文件中:

    <httpModules>
        <remove name="ChartStreamHandler"/>
    </httpModules>
    

    【讨论】:

      猜你喜欢
      • 2013-09-14
      • 2011-01-15
      • 1970-01-01
      • 2010-10-27
      • 2011-05-01
      • 2013-07-30
      • 1970-01-01
      • 1970-01-01
      • 2011-09-11
      相关资源
      最近更新 更多