Quando são feitas chamadas de serviços WCF através de um cliente desse serviço, os cabeçalhos necessários para as trocas de mensagens são gerados automaticamente no lado do cliente, porém em alguns casos, por questões variadas, são necessários cabeçalhos adicionais.
Na arquitetura de hospedagem do UOL Host, por questões de segurança, é necessário que toda request HTTP recebida possua um cabeçalho ‘User-Agent’ com um valor. No caso de serviços WCF, por padrão esse cabeçalho não é enviado e, para que os serviços funcionem corretamente, é necessário adicioná-lo.
Existem várias formas de se adicionar cabeçalhos a uma requisição de serviço WCF, abaixo exemplificamos a implementação de uma forma simples e bastante utilizada para esse propósito.
A solução consiste na implementação de um inspetor de mensagens que é adicionado como um comportamento ao cliente. Esse inspetor terá acesso a todas as mensagens enviadas e recebidas pelo cliente e adicionará o cabeçalho ‘User-Agent’ nas mensagens enviadas.
Implementação:
1 – Na solução cliente, criar uma classe que implemente a interface IClientMessageInspector e outra que implemente a interfaceIEndpointBehavior:
// Inspetor de mensagens usado para adicionar o cabeçalho HTTP User-Agent nas chamadas de serviço WCF
publicclass ClientMessageInspector : IClientMessageInspector
{
public object BeforeSendRequest(ref System.ServiceModel.Channels.Message request, IClientChannel channel)
{
string userAgent = ‘Meu User-Agent’;
if (request.Properties.Count == 0?