<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.