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

Posted

技术标签:

【中文标题】停止从 IIS 7.5 中的父 ASP.NET 应用程序继承 web.config【英文标题】:Stop inheriting web.config from parent ASP.NET application in IIS 7.5 【发布时间】:2011-09-05 05:36:07 【问题描述】:

我们在 IIS 7.5 中部署了一个 ASP.NET 网站(应用程序 1)。然后在该应用程序下创建另一个 ASP.NET 应用程序(应用程序 2)。但在 App 2 中,我不想从 App 1 继承 web.config

如果我尝试在 App 1 中执行以下操作,web.config:

<location path="." inheritInChildApplications="false"> 
    <configSections> 

    <!-- etc -->

    </configSections>
</location>

报错:

配置错误 配置节“configSections”不能 阅读,因为它缺少一个部分 声明

如果我尝试这样做:

<remove name = "system.web.extensions" /> 

仍然报同样的错误:

【问题讨论】:

只是补充一下,APP 1(父)使用的是 .net 3.5 框架,而 APP 2(子)使用的是 .net 2.x 框架。 .net 3.5 在 .net 2 框架之上运行。 【参考方案1】:

您不能将整个 &lt;configSections&gt; 配置元素包装在 &lt;location path="." inheritInChildApplications="false"&gt; 中。这在 ASP.NET 中不受支持(目前)。

来自文档:

SectionInformation.InheritInChildApplications Property

InheritInChildApplications 属性仅适用于 特定位置的配置 设置。

还有:

获取或设置一个值,指示 是否设置 在相关配置部分中指定被继承 通过驻留在 相关子目录 应用。

&lt;configSection&gt; 元素是特殊的,不是配置设置。它们用于定义配置设置的处理程序。

如果您需要从子应用程序中删除冲突配置&lt;section&gt;,您可以在子应用程序的web.config 文件中使用&lt;remove&gt; 元素执行此操作:

remove Element for configSections (General Settings Schema)

【讨论】:

实际上我们可以像 这样删除单个项目,但我们不能像这样删除“Sectiongroup”。 。这行不通,这是主要问题。 @farrukh - 你能发布一个你如何使用它的例子吗?【参考方案2】:

这对我有用。

对于那些无法使用位置路径解决方案的人,您可能忘记关闭位置元素标签(如果您只是在服务器上的文本编辑器中编辑了 web.config)。这是一个例子:

<configuration>
  <configSections>
 ...
  </configSections>
  <connectionStrings>
 ...
  </connectionStrings>
  <location path="." inheritInChildApplications="false">
  <system.web>
 ...
  </system.web>
 ...
  </location>
</configuration>

请注意,configSections 和 connectionStrings 不应位于 location 元素中,这可能是 OP 尝试不起作用的原因。

【讨论】:

【参考方案3】:

如果您可以将您的子应用程序部署到单独的网站(同一台机器,不同的端口),Application Request Routing 可能会提供帮助。

解决方法类似于this post。首先,安装ARR。然后,在侦听非标准端口的网站上配置您的“子”应用程序。接下来,在“父”应用程序的网站上配置与“子”应用程序的原始路径匹配的重写规则。让此规则将请求转发到在新端口上侦听的新创建网站。

我会发布一个示例,但我希望通过查看 the post referenced above 来了解其工作原理相当简单。

【讨论】:

这是一个很好的解决方案,例如 Wordpress 虚拟目录,它托管在具有复杂 web.config 的站点的根目录中【参考方案4】:

您是否尝试过以下链接:

http://www.kowitz.net/archive/2007/05/16/stopping-asp-net-web-config-inheritance

我可以保证这就像我过去所做的那样工作。

【讨论】:

谢谢。正如我所提到的,这个 不适用于

以上是关于停止从 IIS 7.5 中的父 ASP.NET 应用程序继承 web.config的主要内容,如果未能解决你的问题,请参考以下文章

IIS 7.5 中的 Asp.net mvc 4 应用程序问题

密码保护 IIS 7.5 中的 ASP.NET Web 应用程序

IIS 7.5 ASP.Net 和远程共享

如何确保使用 ASP.NET MVC5 和 IIS 7.5 express 刷新 CSS 文件

ASP.Net MVC 3/4 托管在 IIS 7.5 默认处理程序映射上

ASP.Net / IIS 7.5 无法识别用于 OutputCache 的 jMeter