1

我正在尝试在现有(根级别)网站下的 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>

我还试图阻止扩展部分的继承,如下所示:<extensions><clear/></extensions>. 但是,扩展节点似乎<clear/>不支持。

然而,当添加的网站上发生 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 中禁止继承,因为其他添加的网站正在使用相关设置。

4

1 回答 1

0

如果您能够使用<location>根中的元素,那么您可以使用该属性web.config选择不继承哪些部分:inheritInChildApplications

例如:

<location path="MyWebApp" inheritInChildApplications="false">
    <system.serviceModel>
    </system.serviceModel>
</location>
于 2011-08-17T23:04:14.717 回答