<behaviorExtensions>
As extensões de comportamento permitem ao utilizador criar elementos de comportamento definidos pelo utilizador. Estes elementos podem ser utilizados juntamente com os elementos de comportamento padrão do Windows Communication Foundation (WCF). A behaviorExtensions
secção define o elemento para que possa ser utilizado na configuração. Eis 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 capacidades de configuração ao elemento, tem de escrever e registar um elemento de configuração. Para obter mais informações, veja a System.Configuration documentação.
Depois de o elemento e o respetivo tipo de configuração serem definidos, a extensão pode ser utilizada, conforme mostrado no exemplo seguinte.
<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
Recomenda-se vivamente que utilize nomes de assemblagem completamente qualificados ao registar tipos nos machine.config
ficheiros e app.config
. Se o tipo não for definido de forma exclusiva, o carregador do tipo CLR procura-o nas seguintes localizações pela ordem especificada:
Se a assemblagem do tipo for conhecida, o carregador procura as localizações de redirecionamento do ficheiro de configuração, GAC, a assemblagem atual com informações de configuração e o diretório base da aplicação. Se a assemblagem for desconhecida, o carregador procura na assemblagem atual, mscorlib e na localização devolvida pelo TypeResolve
processador de eventos. Esta ordem de pesquisa CLR pode ser modificada com hooks, como o mecanismo de Reencaminhamento de Tipos e o evento AppDomain.TypeResolve.
Um atacante pode explorar a ordem de pesquisa CLR e executar código não autorizado. A utilização de nomes completamente qualificados (fortes) identifica exclusivamente um tipo e aumenta ainda mais a segurança do seu sistema.
Para obter mais informações, veja Como o Runtime Localiza Assemblagens e TypeResolve.