1

IIS で既存の (ルート レベル) Web サイトに Web アプリケーションを追加しようとしています。ルート レベルの 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 サイトに必要なアセンブリへの参照を追加することは許可されていないため、この方法で拡張機能の継承を無効にしたいと考えています (もちろん、追加された Web サイトの web.config で):

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

また、次のような拡張機能セクションの継承を防止しようとしていました: <extensions><clear/></extensions>. ただし、<clear/>拡張ノードではサポートされていないようです。

それでも、追加された Web サイトで 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 サイトが問題の設定を使用しているため、ルート レベルの Web サイトの 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 に答える