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

时间:2011-05-31 06:10:42

标签: asp.net configuration web-config

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

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

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

    <!-- etc -->

    </configSections>
</location>

报告错误:

  

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

如果我尝试:

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

它仍然报告相同的错误:

4 个答案:

答案 0 :(得分:7)

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

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

我会发布一个例子,但我希望通过查看the post referenced above来了解它是如何工作的相当简单。

答案 1 :(得分:4)

这对我有用。

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

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

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

答案 2 :(得分:0)

您是否尝试过以下链接:

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

我可以保证这一点像我过去那样工作。

答案 3 :(得分:0)

您无法将整个<configSections>配置元素包装在<location path="." inheritInChildApplications="false">中。 ASP.NET(尚未)支持此功能。

来自文档:

  

SectionInformation.InheritInChildApplications Property

     

InheritInChildApplications   财产仅适用于   特定于位置的配置   设置。

此外:

  

获取或设置一个指示的值   是否设置   继承了相关配置部分中指定的   由驻留在的应用程序   相关的子目录   应用

<configSection>元素是特殊的,不是配置设置。它们用于定义配置设置的处理程序。

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

  

remove Element for configSections (General Settings Schema)