我正在尝试在现有(根级别)网站下的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中无法禁止继承,因为其他已添加的网站正在使用相关设置。
答案 0 :(得分:0)
如果您能够使用根<location>
中的web.config
元素,那么您可以使用inheritInChildApplications
属性选择不继承的部分:
例如:
<location path="MyWebApp" inheritInChildApplications="false">
<system.serviceModel>
</system.serviceModel>
</location>