阻止将父web.config继承到IIS 7.5上的子应用程序

时间:2016-04-14 12:56:13

标签: asp.net inheritance iis web-config

IIS 7.5 上,我使用 parentAppPool 使用父网站,使用 childAppPool 使用SubApplication。

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

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

然后我尝试将enableConfigurationOverride="false"属性添加到applicationHost.config SubApplicationPool 但也无效

任何帮助都将不胜感激。

web.config的高级骨架 enter image description here

当我尝试这个时,我在父网站上收到Telerik错误,但是子网站有效!

  web.config中缺少

'〜/ Telerik.Web.UI.WebResource.axd'。   RadScriptManager需要在web.config中注册HttpHandler。   请使用控件智能标记自动添加处理程序,或   有关详细信息,请参阅帮助:控件&gt; RadScriptManager

2 个答案:

答案 0 :(得分: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> 

答案 1 :(得分:0)

使用<location>元素,我可以禁用继承。

enter image description here 但是这引起了Telerik控件的新错误

  web.config中缺少

'〜/ Telerik.Web.UI.WebResource.axd'。   RadScriptManager需要在web.config中注册HttpHandler。   请使用控件智能标记自动添加处理程序,或   有关详细信息,请参阅帮助:控件&gt; RadScriptManager

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

中所述
  

EnableHandlerDetection 布尔

     

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

     

<强>说明

     

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

然后我又出现了另一个错误

  

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

要解决此问题,我对<system.webserver>

进行了以下更改
 <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
  </system.webServer>

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