如何防止 IIS 默认站点 web.config 文件被虚拟目录继承?
Posted
技术标签:
【中文标题】如何防止 IIS 默认站点 web.config 文件被虚拟目录继承?【英文标题】:How do you prevent the IIS default site web.config file being inherited by virtual directories? 【发布时间】:2010-09-07 10:56:19 【问题描述】:我在默认 IIS 站点的 web.config 文件中有以下代码。
<httpModules>
<add type="MDL.BexWebControls.Charts.ChartStreamHandler,Charts" name="ChartStreamHandler"/>
</httpModules>
然后当我设置并浏览到一个虚拟目录时,我得到了这个错误
无法加载文件或程序集“图表”或其依赖项之一。系统找不到指定的文件。
虚拟目录从默认的 web.config 继承模块。
如何阻止这种继承?
【问题讨论】:
【参考方案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 我使用<remove />
获得了成功和失败的结果。我必须记住将它添加到每个虚拟目录中,这很痛苦。
【讨论】:
是的,我也觉得这很痛苦。感谢您提供有关 inheritInChildApplications 的提示。【参考方案2】:According to Microsoft,其他网站不继承默认网站的设置。您的意思是您正在编辑与 machine.config 位于同一文件夹中的默认 web.config?
【讨论】:
我认为提问者正在谈论从它继承的站点的虚拟目录。【参考方案3】:将以下内容添加到虚拟目录的 web.config 文件中:
<httpModules>
<remove name="ChartStreamHandler"/>
</httpModules>
【讨论】:
以上是关于如何防止 IIS 默认站点 web.config 文件被虚拟目录继承?的主要内容,如果未能解决你的问题,请参考以下文章
.htaccess转为web.config的操作技巧 apache伪静态转为iis伪静态