Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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-Addressing definuje pojem odkazu na koncový bod jako způsob, jak řešit konkrétní koncový bod webové služby. Ve WCF jsou odkazy na koncové body modelovány pomocí EndpointAddress třídy – EndpointAddress je typ pole Adresa třídy ServiceEndpoint.
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 mohl odeslat referenční parametr, musí přidat AddressHeader k EndpointAddress objektu ServiceEndpoint. 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 použitím původní hodnoty EndpointAddress jako počáteční hodnoty. Pak přidá nově vytvořenou hlavičku adresy, volání na CreateAddressHeader vytvoří záhlaví s konkrétním názvem, oborem názvů a hodnotou. Tady je hodnota "John". Po přidání hlavičky do výrobníku metoda ToEndpointAddress() převede (proměnlivý) výrobník zpět na (neměnnou) adresu koncového bodu, která se přiřadí zpět ke klientskému koncovému bodu v poli Adresa.
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
počítačový 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".
Jak nastavit, sestavit a spustit ukázku
Ujistěte se, že jste provedli instalační proceduru One-Time pro ukázky Windows Communication Foundation.
Pokud chcete sestavit verzi C# nebo Visual Basic .NET řešení, postupujte podle pokynů v Sestavení ukázek Windows Communication Foundation.
Pokud chcete spustit ukázku v konfiguraci pro jeden počítač nebo pro více počítačů, postupujte podle pokynů v Spuštění ukázek Windows Communication Foundation.