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