web.config 继承:<clear/> 导致 <system.webServer><modules> 中出现 XML 解析错误

Ben*_*per 5 asp.net inheritance web-config xml-parsing

我正在尝试将一个小型 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>
...
Run Code Online (Sandbox Code Playgroud)

我无法在根目录中使用以下位置标记,因为我确实想继承其他子文件夹。有什么办法可以让孩子关闭对父母的继承吗?

<location path="." inheritInChildApplication="false"> 
Run Code Online (Sandbox Code Playgroud)

子 web.config

...
<system.webServer>
  ...
  <modules>
    <clear/>
  </modules>
...
Run Code Online (Sandbox Code Playgroud)

我尝试使用clear,但这会导致奇怪的解析错误:“XML 解析错误:找不到元素位置:...行号 1,列 1:”

如果我对每个模块都使用删除,我会取得一些成功。只要我至少留下1个模块。(无论是哪一个)当我删除最后一个模块时,我得到与清除相同的解析错误。任何人都知道为什么会发生这个错误?还有其他方法可以消除 web.config 继承吗?

小智 1

在我看来,最简单的解决方案是将您的应用程序设置为它自己的应用程序,因为正如您所指的,子文件夹包含一个应用程序。您仍然可以将用户链接回您的其他父应用程序。只需设置子文件夹即可将所有请求重定向到其他应用程序。对我来说,这听起来更像是一个架构问题,但我只是根据少量信息进行猜测。

另一个选项是,如果您的父应用程序引用 web.config 中的程序集,请将其排除在子应用程序中。

我的最后一个建议是,您可能只需要更好地拆分应用程序的源代码和引用并重新编译。