web.config 继承:<clear/> 导致 <system.webServer><modules> 中的 XML 解析错误
Posted
技术标签:
【中文标题】web.config 继承:<clear/> 导致 <system.webServer><modules> 中的 XML 解析错误【英文标题】:web.config inheritance: <clear/> causes XML Parsing Error in <system.webServer><modules> 【发布时间】:2012-03-06 22:08:07 【问题描述】:我正在尝试将一个小的 asp.net 应用程序添加到我现有网站的子文件夹中。问题是根 web.config 文件包含破坏我的应用程序的模块。我想阻止/删除 Web.config 继承。
父 web.config
...
<system.webServer>
...
<modules>
<add name="WwwSubDomainModule" type="BlogEngine.Core.Web.HttpModules.WwwSubDomainModule, BlogEngine.Core" />
<add name="UrlRewrite" type="BlogEngine.Core.Web.HttpModules.UrlRewrite, BlogEngine.Core" />
...
</modules>
...
我不能在根目录中使用以下位置标记,因为我确实想要继承其他子文件夹。有没有办法让孩子关闭来自父母的继承?
<location path="." inheritInChildApplication="false">
子 web.config
...
<system.webServer>
...
<modules>
<clear/>
</modules>
...
我尝试使用 clear 但这会导致一个奇怪的解析错误: “XML 解析错误:找不到元素位置:...第 1 行,第 1 列:”
如果我对每个模块都使用 remove,我会取得一些成功。只要我留下至少 1 个模块。 (不管是哪一个)当我删除最后一个模块时,我得到与 clear 相同的解析错误。任何人都知道为什么会发生此错误?有没有其他方法可以消除 web.config 继承?
【问题讨论】:
【参考方案1】:在我看来,最简单的解决方案是将您的应用程序设置为它自己的应用程序,因为子文件夹包含您所指的应用程序。您仍然可以将用户链接回您的其他父应用。只需将子文件夹设置为将所有请求重定向到其他应用程序。对我来说,这听起来更像是一个架构问题,但我只是根据少量信息进行猜测。
另一种选择是,如果您的父应用正在引用 web.config 中的程序集,请将其排除在子应用中。
我的最后一个建议是,您可能只需将应用程序的源代码和引用拆分得更好一点,然后重新编译。
【讨论】:
以上是关于web.config 继承:<clear/> 导致 <system.webServer><modules> 中的 XML 解析错误的主要内容,如果未能解决你的问题,请参考以下文章
Window2008通过web.config进行限制ip访问