Отключение наследования web.config для поведенческих расширений - PullRequest
1 голос
/ 17 августа 2011

Я пытаюсь добавить веб-приложение в IIS под существующим (корневым уровнем) веб-сайтом.Файл web.config веб-сайта корневого уровня определяет определенные свойства Extensions в system.serviceModel:

    <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-файле веб-сайта корневого уровня, потому что другие добавленные сайты используют соответствующие настройки.

1 Ответ

0 голосов
/ 18 августа 2011

Если вы можете использовать элемент <location> в корне web.config, вы можете выбрать, какие разделы не наследовать, используя атрибут inheritInChildApplications:

Например:

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