Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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).
![]() |
---|
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, compilar y ejecutar el ejemplo
Asegúrese de realizar los Procedimiento de instalación única para los ejemplos de Windows Communication Foundation.
Para compilar el código C# o Visual Basic .NET Edition de la solución, siga las instrucciones de Compilación de los ejemplos de Windows Communication Foundation.
Para ejecutar el ejemplo en una configuración con un único equipo o con varios, siga las instrucciones de Running the Windows Communication Foundation Samples.
![]() |
---|
Puede que los ejemplos ya estén instalados en su equipo. Compruebe el siguiente directorio (valor predeterminado) antes de continuar.
<InstallDrive>:\WF_WCF_Samples
Si no existe este directorio, vaya a la página de ejemplos de Windows Communication Foundation (WCF) y Windows Workflow Foundation (WF) Samples para .NET Framework 4 para descargar todos los ejemplos de Windows Communication Foundation (WCF) y WF. Este ejemplo se encuentra en el siguiente directorio.
<InstallDrive>:\WF_WCF_Samples\WCF\Basic\Client\AddressHeaders
|