Adicionar Headers en Mensajes SOAP

Para diferentes efectos (enrutamiento por ejemplo) es necesario agregar a los mensajes SOAP gestionados por servicios de WCF un encabezado (header) personalizado con información, de esta forma se puede enviar información entre los clientes y los servicios sin que sea necesario modificar el contenido del servicio (datos). Un recordatorio rápido de cómo hacerlo usando código en WCF 3.5.

ServicioFuncionario.ServicioFuncionarioClient sv = new ServicioFuncionario.ServicioFuncionarioClient();
using (new OperationContextScope(sv.InnerChannel))
{
     MessageHeader headerLocal = MessageHeader.CreateHeader("Key", "http://serviciosproduccionCP", "HostCP");
     OperationContext.Current.OutgoingMessageHeaders.Add(headerLocal);

     MessageHeader headerBogota = MessageHeader.CreateHeader("Key", "http://serviciosproduccionBogota", "HostBogota");
     OperationContext.Current.OutgoingMessageHeaders.Add(headerBogota);

     resultado = sv.FuncionarioLogin(login, passWord);
}

sv.Close();

Este código agrega dos encabezados a la petición funcionarioLogin, el valor HostCP y HostBogota es el que nos interesa agregar a los mensajes, con esa información el servicio podría realizar diferentes procesos como enrutamiento, registro, gestión de errores, respaldo entre otros.

Nota1: en WCF 4.0 se puede utilizar el tag header en el archivo de configuración del servicio.

Nota2: El protocolo usado en la comunicación debe tener soporte para la gestión de encabezados en el mensaje SOAP.

Juan Peláez

3Metas Corp