Quando utilizamos a template de projeto WCF Service Library, todas as configurações do serviço estão no arquivo App.config. Ao rodar a aplicação, o utilitário conhecido como WCF Test Client é executado, fazendo tudo o que é necessário para efetuar o hosting do serviço recém criado. Como não temos acesso a criação e o gerenciamento do host (representado pela classe ServiceHost), não poderemos configurá-lo de forma imperativa.
Como grande parte das configurações do WCF pode ser realizada através do arquivo de configuração, podemos utilitizá-lo para adicionar behaviors existentes no WCF, mudar alguma característica do binding, etc. O problema aparece quando precisamos adicionar um behavior customizado. Neste caso, além da classe que o representa, ainda é necessário a criação de uma segunda classe, que definirá o respectivo behavior no arquivo de configuração.
Para isso, é necessário criar uma classe e herdar de BehaviorExtensionElement, implementando os membros BehaviorType e CreateBehavior, assim como mostro no final deste artigo. Depois desta classe criada, precisamos ainda registrar esta extensão no arquivo de configuração, antes de efetivamente fazer o uso dela. Para isso, utilizamos a seção behaviorExtensions, como mostrado abaixo:
<extensions>
<behaviorExtensions>
<add name=”errorService”
type=”Host.ErrorServiceElement, Host, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”/>
</behaviorExtensions>
</extensions>
E, finalmente, utilizá-la:
<behaviors>
<serviceBehaviors>
<behavior name=”BehaviorConfig”>
<errorService />
<serviceMetadata httpGetEnabled=”True”/>
<serviceDebug includeExceptionDetailInFaults=”False” />
</behavior>
</serviceBehaviors>
</behaviors>