Sdílet prostřednictvím


Hlavičky adresy

Ukázka Hlavičky adres ukazuje, jak můžou klienti předávat referenční parametry službě pomocí technologie Windows Communication Foundation (WCF).

Poznámka:

Postup nastavení a pokyny k sestavení pro tuto ukázku najdete na konci tohoto tématu.

Specifikace WS-Address definuje pojem odkazu na koncový bod jako způsob, jak adresovat konkrétní koncový bod webové služby. Ve WCF jsou odkazy na koncové body modelovány pomocí EndpointAddress třídy – EndpointAddress je typ pole ServiceEndpoint Adresa třídy.

Součástí referenčního modelu koncového bodu je, že každý odkaz může obsahovat některé referenční parametry, které přidávají další identifikační informace. Ve WCF jsou tyto referenční parametry modelovány jako instance AddressHeader třídy.

V této ukázce klient přidá do koncového bodu klienta referenční parametr EndpointAddress . Služba vyhledá tento referenční parametr a použije jeho hodnotu v logice operace služby "Hello".

Klient

Aby klient odeslal parametr odkazu, musí přidat AddressHeader do objektu EndpointAddressServiceEndpoint. Vzhledem k tomu, že EndpointAddress třída je neměnná, musí být úprava adresy koncového bodu provedena pomocí EndpointAddressBuilder třídy. Následující kód inicializuje klienta tak, aby v rámci zprávy odeslal parametr odkazu.

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();

Kód vytvoří EndpointAddressBuilder jako počáteční hodnotu původní EndpointAddress hodnotu. Pak přidá nově vytvořenou hlavičku adresy; volání pro CreateAddressHeader vytvoření záhlaví s konkrétním názvem, oborem názvů a hodnotou. Tady je hodnota "John". Po přidání hlavičky do tvůrce ToEndpointAddress() metoda převede tvůrce (proměnlivý) zpět na adresu koncového bodu (neměnné), která je přiřazena zpět do pole Adresa koncového bodu klienta.

Když klient zavolá Console.WriteLine(client.Hello());, služba dokáže získat hodnotu tohoto parametru adresy, jak je vidět ve výsledném výstupu klienta.

Hello, John

Server

Implementace operace Hello() služby používá aktuální OperationContext ke kontrole hodnot hlaviček příchozí zprávy.

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;

Kód iteruje přes všechna záhlaví příchozí zprávy a hledá hlavičky, které odkazují na parametry s konkrétním názvem a. Když se parametr najde, přečte hodnotu parametru a uloží ho do proměnné "id".

Nastavení, sestavení a spuštění ukázky

  1. Ujistěte se, že jste pro ukázky windows Communication Foundation provedli jednorázovou instalační proceduru.

  2. Pokud chcete sestavit edici C# nebo Visual Basic .NET řešení, postupujte podle pokynů v části Sestavení ukázek windows Communication Foundation.

  3. Pokud chcete spustit ukázku v konfiguraci s jedním nebo více počítači, postupujte podle pokynů v části Spuštění ukázek windows Communication Foundation.