我们在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" />
它仍然报告相同的错误:
答案 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>
元素执行此操作: