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 解析错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 web.config 转换时的可替换令牌_?

Window2008通过web.config进行限制ip访问

停止从 IIS 7.5 中的父 ASP.NET 应用程序继承 web.config

通过基类找到所有继承的子类

如何找到特定DLL的PublicKeyToken?

web.config