【问题标题】:Disabling web.config inheritance for behaviorExtensions为 behaviorExtensions 禁用 web.config 继承
【发布时间】:2011-10-29 03:38:00
【问题描述】:

我正在尝试在现有(根级别)网站下的 IIS 中添加 Web 应用程序。根级网站的 web.config 文件在 system.serviceModel 下定义了某些 behaviorExtensions:

    <extensions>
        <behaviorExtensions>
            <add name="errorHandler" type="API.ErrorHandler.WCFErrorHandlerElement, API.ErrorHandler, Version=1.5.1.832, Culture=neutral, PublicKeyToken=null" />
        </behaviorExtensions>
    </extensions>

扩展名是这样使用的:

        <serviceBehaviors>
            <behavior name="DefaultRESTBasedHTTPSServiceBehavior">
                <errorHandler />
            </behavior>
        </serviceBehaviors>

由于某些原因,我不允许在添加的网站中添加对所需程序集的引用,所以我想通过这种方式禁用扩展的继承(当然在添加的网站的 web.config 中):

<behaviors>      
  <serviceBehaviors>
    <clear/>
  </serviceBehaviors>
  <endpointBehaviors>
    <clear/>
  </endpointBehaviors>
</behaviors>

我还试图阻止扩展部分的继承,如下所示:&lt;extensions&gt;&lt;clear/&gt;&lt;/extensions&gt;。不过,扩展节点似乎不支持&lt;clear/&gt;

然而,当添加的网站上发生 WCF 错误时,我得到以下异常(问题在第 191 行):

Parser Error Message: The type 'API.ErrorHandler.WCFErrorHandlerElement, API.ErrorHandler, Version=1.5.1.832, Culture=neutral, PublicKeyToken=null' registered for extension 'errorHandler' could not be loaded.

Line 189:           <serviceBehaviors>
Line 190:               <behavior name="DefaultRESTBasedHTTPSServiceBehavior">
Line 191:                   <errorHandler />
Line 192:               </behavior>
Line 193:               <behavior name="DefaultSOAPBasedHTTPSServiceBehavior">

请注意,不能在根级网站的 web.config 中禁止继承,因为其他添加的网站正在使用相关设置。

【问题讨论】:

    标签: wcf iis-7 configuration web-config servicebehavior


    【解决方案1】:

    如果您能够在根web.config 中使用&lt;location&gt; 元素,那么您可以使用inheritInChildApplications 属性选择不继承哪些部分:

    例如:

    <location path="MyWebApp" inheritInChildApplications="false">
        <system.serviceModel>
        </system.serviceModel>
    </location>
    

    【讨论】:

    • 不幸的是,我不允许这样做(来自我的原始帖子):“请考虑,在根级网站的 web.config 中禁止继承是不可能的,因为其他添加的网站是使用相关设置。”
    • @kahoon - 你的意思是来自站点根目录的子站点正在使用这些设置吗?
    • Kev:是的,就是这样。
    • @kahoon - 好的,在根 web.config 中,您可以指定一个特定路径以排除该特定应用程序的扩展。看我的更新。其他子网站不受影响。
    猜你喜欢
    • 2010-09-26
    • 2010-12-10
    • 2011-11-11
    • 2012-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-14
    • 1970-01-01
    相关资源
    最近更新 更多