【问题标题】:Prevent inheriting parent web.config to child Application on IIS 7.5防止在 IIS 7.5 上将父 web.config 继承给子应用程序
【发布时间】:2016-04-14 12:56:13
【问题描述】:

IIS 7.5 上,我有使用 parentAppPool 的父站点和使用 childAppPool 的子应用程序。

父站点加载一切正常,但是当我以 http://parentSite.com/SubApplication 访问子应用程序时,它期望来自父站点 bin 的 DLL

为了防止 web.config 继承,我尝试用 <location path="SubApplication" inheritInChildApplications="false"><location path="." inheritInChildApplications="false"> 包装 <system.web>,这会破坏父站点的工作。

然后我尝试将enableConfigurationOverride="false" 属性添加到applicationHost.config 中的SubApplicationPool 也不起作用

任何帮助将不胜感激。

web.config 的高级骨架

当我尝试这个时,我在父站点上收到 Telerik 错误,但子站点可以工作!

'~/Telerik.Web.UI.WebResource.axd' 在 web.config 中缺失。 RadScriptManager 需要在 web.config 中注册一个 HttpHandler。 请使用控制智能标签自动添加处理程序,或 有关更多信息,请参阅帮助:Controls > RadScriptManager

【问题讨论】:

    标签: asp.net inheritance iis web-config


    【解决方案1】:

    如果您希望从继承链中删除特定配置,可以使用<clear/> 标签删除父项中的任何先前引用设置,然后重新开始。

    以下来自here 的示例显示了如何删除以前的会员详细信息并创建一个新会员

     <membership>
       <providers>
          <clear/>
          <add name="AspNetSqlMembershipProvider"
              type="System.Web.Security.SqlMembershipProvider, 
                    System.Web, Version=2.0.0.0, 
                    Culture=neutral, 
                    PublicKeyToken=b03f5f7f11d50a3a"
              connectionStringName="MyDatabase"
              enablePasswordRetrieval="false"
              (additional elements removed for brevity)
           />
       </providers>
     </membership> 
    

    【讨论】:

    • 好吧,我想在这里完全取消继承行为。我该怎么做?
    • 你正在使用&lt;location path="SubApplication" inheritInChildApplications="false"&gt; 而不是尝试&lt;location path="" inheritInChildApplications="false"&gt; 更多info
    • 也可以试试this
    • 我是否将其包装在父 web.config 或子 web.config 中?
    • 已将其添加到 system.web 和 system.webserver 配置节“位置”无法读取,因为它缺少节声明
    【解决方案2】:

    使用&lt;location&gt; 元素我能够禁用继承。

    但这引发了 Telerik 控件的新错误

    '~/Telerik.Web.UI.WebResource.axd' 在 web.config 中缺失。 RadScriptManager 需要在 web.config 中注册一个 HttpHandler。 请使用控制智能标签自动添加处理程序,或 有关更多信息,请参阅帮助:Controls > RadScriptManager

    为了解决这个问题,我使用了 Telerik.Web.UI.RadScriptManager Documentation 中提到的 EnableHandlerDetection 属性

    EnableHandlerDetection布尔值

    获取或设置一个值,指示 RadScriptManager 是否应该检查 Telerik.Web.UI.WebResource 处理程序存在于应用程序中 配置文件。

    备注

    当 EnableHandlerDetection 设置为 true 时,RadScriptManager 自动检查它使用的 HttpHandler 是否注册到 应用程序配置文件,如果 HttpHandler 注册丢失。将此属性设置为 false 如果您的 场景使用文件输出组合脚本,或者在运行时 中等信任度。

    然后我又遇到了另一个错误

    HTTP 错误 500.22 - 内部服务器错误 ASP.NET 设置已被 检测到不适用于集成托管管道模式。

    为了解决我对&lt;system.webserver&gt;进行了以下更改

     <system.webServer>
        <validation validateIntegratedModeConfiguration="false" />
      </system.webServer>
    
      <location path="." inheritInChildApplications="false">
      <system.webServer>
        <!--<validation validateIntegratedModeConfiguration="false" />-->
        <modules runAllManagedModulesForAllRequests="true">
        .... other stuff
       </system.webServer>
      </location>
    

    【讨论】:

      猜你喜欢
      • 2011-09-05
      • 1970-01-01
      • 1970-01-01
      • 2016-03-11
      • 1970-01-01
      • 2020-08-23
      • 2010-10-21
      • 2012-10-01
      相关资源
      最近更新 更多