Estoy intentando adjuntar una clave de API a la cabecera del mensaje saliente OperationContext de la siguiente manera:Adición y recuperar los datos de solicitud de contexto
public static void AddApikeyToHeader(string apikey, IContextChannel channel, string address)
{
using (OperationContextScope scope = new OperationContextScope(channel))
{
MessageHeader header = MessageHeader.CreateHeader("apikey", address, apikey);
OperationContext.Current.OutgoingMessageHeaders.Add(header);
}
}
pero luego no tengo idea de cómo recuperar la cabecera en el lado del servidor . Estoy usando un gestor de autorización de servicio y me sale el contexto operativo actual y tratar de recuperar la cabecera de la siguiente manera:
public string GetApiKey(OperationContext operationContext)
{
var request = operationContext.RequestContext.RequestMessage;
var prop = (HttpRequestMessageProperty)request.Properties[HttpRequestMessageProperty.Name];
return prop.Headers["apikey"];
}
pero no hay cabecera apikey adjunta allí. Además, en la depuración cuando inspecciono OperationContext no puedo ver mi encabezado de apikey en ningún lado. ¿Alguien puede ver dónde me estoy equivocando?
Gracias! ¡Descubrí que el problema que estaba teniendo era porque no estaba haciendo mi llamada de servicio durante la duración del alcance del contexto! – Dimitar
¿Qué es un canal de servicio? ¿IMyServiceChannel? – PositiveGuy
IMyServiceChannel es la interfaz del canal de comunicación entre el cliente y el servidor. –