<behaviorExtensions>

As extensões de comportamento permitem que o usuário crie elementos de comportamento definidos pelo usuário. Esses elementos podem ser usados junto com os elementos de comportamento padrão do WCF (Windows Communication Foundation). A seção behaviorExtensions define o elemento de modo que ele possa ser usado na configuração. Aqui está um exemplo de uma extensão de comportamento típica.

<system.serviceModel>
  <extensions>
    <behaviorExtensions>
      <add name="myBehavior"
           type="Microsoft.ServiceModel.Samples.MyBehaviorSection, MyBehavior,
                 Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
    </behaviorExtensions>
  </extensions>
</system.serviceModel>

Para adicionar habilidades de configuração ao elemento, você precisa gravar e registrar um elemento de configuração. Para obter mais informações a respeito, confira a documentação System.Configuration.

Após o elemento e seu tipo de configuração serem definidos, a extensão poderá ser usada, como mostra o exemplo a seguir.

<behaviors>
  <behavior configurationName="testChannelBehavior">
    <myBehavior />
    <channelSecurity cacheCookies="false"
                     detectReplays="false"
                     maxCachedNonces="9"
                     maxClockSkew="00:00:03"
                     maxCookieCachingTime="00:07:24"
                     replayWindow="00:07:22.2190000" />
  </behavior>
</behaviors>

Segurança

É altamente recomendável que você use nomes de assembly totalmente qualificados ao registrar tipos nos arquivos e machine.config nos app.config arquivos. Se o tipo não for definido exclusivamente, o carregador de tipo CLR o procurará nos seguintes locais na ordem especificada:

Se o assembly do tipo for conhecido, o carregador pesquisará os locais de redirecionamento do arquivo de configuração, GAC, o assembly atual que está usando as informações de configuração e o diretório base do aplicativo. Se o assembly for desconhecido, o carregador pesquisará o assembly atual, mscorlib, e o local retornado pelo manipulador de eventos TypeResolve. Essa ordem de pesquisa do CLR pode ser modificada com ganchos, como o mecanismo de encaminhamento de tipo e o evento AppDomain.TypeResolve.

Um invasor pode explorar a ordem de pesquisa clr e executar código não autorizado. Usar nomes totalmente qualificados (fortes) identifica exclusivamente um tipo e aumenta ainda mais a segurança do sistema.

Para saber mais, confira Como o runtime localiza os assemblies e TypeResolve.

Confira também