Compartir a través de


Encabezados de dirección

Download sample

El ejemplo de encabezados de dirección muestra cómo los clientes pueden pasar los parámetros de referencia a un servicio utilizando Windows Communication Foundation (WCF).

Nota

El procedimiento de instalación y las instrucciones de compilación de este ejemplo se encuentran al final de este tema.

La especificación del direccionamiento del WS define la noción de una referencia del extremo como una manera de direccionar un extremo de servicio web determinado. En WCF, las referencias del extremo se modelan utilizando la clase EndpointAddress- EndpointAddress es el tipo del campo de dirección de la clase ServiceEndpoint.

La parte del modelo de referencia de extremo es que cada referencia puede llevar algunos parámetros de referencia que agregan información de identificación excepcional. En WCF, estos parámetros de referencia se modelan como instancias de la clase AddressHeader.

En este ejemplo, el cliente agrega un parámetro de referencia a EndpointAddress del extremo del cliente. El servicio busca este parámetro de referencia y utiliza su valor en la lógica de su operación del servicio "Hola".

Cliente

Para que el cliente envíe un parámetro de referencia, debe agregar un AddressHeader a EndpointAddress de ServiceEndpoint. Dado que la clase EndpointAddress es inmutable, la modificación de una dirección del extremo se debe hacer utilizando la clase EndpointAddressBuilder. El código siguiente inicializa el cliente para enviar un parámetro de referencia como parte de su mensaje.

HelloClient client = new HelloClient();
EndpointAddressBuilder builder = 
    new EndpointAddressBuilder(client.Endpoint.Address);
AddressHeader header = 
    AddressHeader.CreateAddressHeader(IDName, IDNamespace, "John");
builder.Headers.Add(header);
client.Endpoint.Address = builder.ToEndpointAddress();

El código crea un EndpointAddressBuilder utilizando el EndpointAddress original como un valor inicial. Agrega a continuación un encabezado de dirección creado recientemente; la llamada a CreateAddressHeadercreates un encabezado con un nombre determinado, espacio de nombres y valor. Aquí el valor es "John." Una vez agregado al generador el encabezado, el método ToEndpointAddress() convierte el generador (mutable) en una dirección del extremo (inmutable), la cual está asignada al campo de dirección del extremo del cliente.

Ahora cuando el cliente llama a Console.WriteLine(client.Hello());, el servicio puede obtener el valor de este parámetro de dirección, como se ha visto en el resultado del cliente.

Hello, John

Servidor

La implementación de la operación del servicioHello() utiliza el OperationContext actual para inspeccionar los valores de los encabezados en el mensaje entrante.

string id = null;
// look at headers on incoming message
for (int i = 0; 
     i < OperationContext.Current.IncomingMessageHeaders.Count;      ++i)
{
    MessageHeaderInfo h = 
        OperationContext.Current.IncomingMessageHeaders[i];
    // for any reference parameters with the correct name & namespace
    if (h.IsReferenceParameter && 
        h.Name == IDName && 
        h.Namespace == IDNamespace)
    {
        // read the value of that header
        XmlReader xr = 
OperationContext.Current.IncomingMessageHeaders.GetReaderAtHeader(i);
        id = xr.ReadElementContentAsString();
    }
}
return "Hello, " + id;

El código produce iteraciones sobre todos los encabezados en el mensaje entrante, buscando encabezados que son parámetros de referencia con el nombre determinado y. Cuando se encuentra el parámetro, lee el valor del parámetro y lo almacena en la variante de "id.".

Para configurar, generar y ejecutar el ejemplo

  1. Asegúrese de que ha realizado el Procedimiento de instalación único para ejemplos de Windows Communication Foundation.

  2. Para generar el código C# o Visual Basic .NET Edition de la solución, siga las instrucciones de Generación de ejemplos de Windows Communication Foundation.

  3. Para ejecutar el ejemplo en una configuración de equipos única o cruzada, siga las instrucciones de Ejecución de ejemplos de Windows Communication Foundation.

Footer image

Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.