防止在IIS 7.5上将父web.config继承给子应用程序

HaB*_*aBo 5 asp.net iis inheritance 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"属性添加 到SubApplicationPoolapplicationHost.config也没有用

任何帮助,将不胜感激。

web.config的高级框架 在此处输入图片说明

尝试此操作时,我在父站点上收到Telerik错误,但子站点有效!

web.config中缺少“〜/ Telerik.Web.UI.WebResource.axd”。RadScriptManager要求在web.config中注册HttpHandler。请使用控件智能标记自动添加处理程序,或查看帮助以获取更多信息:控件> RadScriptManager

HaB*_*aBo 0

使用该<location>元素我能够禁用继承。

在此输入图像描述 但这引发了 Telerik 控件的新错误

web.config 中缺少“~/Telerik.Web.UI.WebResource.axd”。RadScriptManager 需要在 web.config 中注册 HttpHandler。请使用控件智能标记自动添加处理程序,或查看帮助以获取更多信息:控件 > RadScriptManager

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

EnableHandlerDetection布尔值

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

评论

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

然后我又犯了一个错误

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>
Run Code Online (Sandbox Code Playgroud)