Web.Config继承问题

时间:2009-10-27 19:50:46

标签: asp.net web-config

我想阻止IIS 7应用程序中的父配置将以下部分推送到父应用程序下的任何应用程序中的任何子web.configs。

    <configSections>
        <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
            <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
                <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
                <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
                    <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere" />
                    <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
                    <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
                    <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
                </sectionGroup>
            </sectionGroup>
        </sectionGroup>
    </configSections>

我需要删除该部分的原因是因为子应用程序不需要它甚至使用它。因此,当父级传递它并尝试运行该子应用程序时,我会在运行时获得以下内容:

Unable to cast object of type 'System.Web.Configuration.ScriptingScriptResourceHandlerSection' to type 'System.Web.Configuration.ScriptingScriptResourceHandlerSection'

我认为无法阻止将configSections向下应用于子应用程序web.configs。您无法使用<location>围绕此特定部分进行包装,只添加<clear/>会导致另一条错误消息:

The configuration section 'appSettings' cannot be read because it is missing a section declaration 

2 个答案:

答案 0 :(得分:2)

根据建议,您可以通过将子应用程序添加到根web.config

来阻止子应用程序继承
<location path="." inheritInChildApplications="false">
...
</location>

记录在案here

答案 1 :(得分:1)

我相信你的运行时错误是由其他东西引起的...就像某种程度的程序集冲突,或者只是缺少程序集。您发布的web.config代码段几乎逐字存在于我继承的几个项目中,并且可以与子应用程序一起使用。但是他们引用旧的1.0版本。

错误信息甚至没有意义......“无法将XYZ类型转换为XYZ类型。”真?你不能?但它们是同一种类型! :|