Megosztás a következőn keresztül:


Címfejlécek

A Címfejlécek minta bemutatja, hogy az ügyfelek hogyan adhatnak át referenciaparamétereket egy szolgáltatásnak a Windows Communication Foundation (WCF) használatával.

Feljegyzés

A minta telepítési eljárása és összeállítási utasításai a témakör végén találhatók.

A WS-Addressing specifikáció egy végponthivatkozás fogalmát határozza meg egy adott webszolgáltatás-végpont kezelésére. A WCF-ben a végponthivatkozások az EndpointAddress osztály használatával modellezhetők – EndpointAddress az osztály Cím mezőjének ServiceEndpoint típusa.

A végpont referenciamodelljének része, hogy minden hivatkozás tartalmazhat olyan referenciaparamétereket, amelyek további azonosítási információkat adnak hozzá. A WCF-ben ezek a referenciaparaméterek osztálypéldányokként modellezhetők AddressHeader .

Ebben a mintában az ügyfél hozzáad egy referenciaparamétert az EndpointAddress ügyfélvégponthoz. A szolgáltatás ezt a referenciaparamétert keresi, és az értékét a "Hello" szolgáltatásművelet logikájában használja.

Ügyfél

Ahhoz, hogy az ügyfél referenciaparamétert küldjön, hozzá kell adnia egy AddressHeader elemet a EndpointAddressServiceEndpointfájlhoz. Mivel az EndpointAddress osztály nem módosítható, a végpontcím módosítását az EndpointAddressBuilder osztály használatával kell elvégezni. Az alábbi kód inicializálja az ügyfelet, hogy az üzenet részeként küldjön egy referenciaparamétert.

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

A kód létrehoz egy EndpointAddressBuilder eredetit EndpointAddress kezdeti értékként. Ezután hozzáad egy újonnan létrehozott címfejlécet; a hívás CreateAddressHeader egy adott névvel, névtérrel és értékkel rendelkező fejlécet hoz létre. Itt az érték "John". Miután hozzáadta a fejlécet a szerkesztőhöz, a ToEndpointAddress() metódus visszaállítja a (mutable) szerkesztőt egy (nem módosítható) végpontcímké, amelyet az ügyfélvégpont Cím mezőjéhez rendel vissza.

Most, amikor az ügyfél hív Console.WriteLine(client.Hello());, a szolgáltatás lekérheti ennek a címparaméternek az értékét, amint az az ügyfél eredményében látható.

Hello, John

Kiszolgáló

A szolgáltatásművelet Hello() megvalósítása az aktuális OperationContext használatával vizsgálja meg a bejövő üzenet fejléceinek értékeit.

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;

A kód végigterjed a bejövő üzenet összes fejlécén, és olyan fejléceket keres, amelyek hivatkozási paraméterek az adott névvel és. A paraméter megtalálása után beolvassa a paraméter értékét, és az "id" változóban tárolja.

A minta beállítása, összeállítása és futtatása

  1. Győződjön meg arról, hogy elvégezte a Windows Communication Foundation-minták egyszeri beállítási eljárását.

  2. A megoldás C# vagy Visual Basic .NET kiadásának létrehozásához kövesse a Windows Communication Foundation-minták készítéséhez szükséges utasításokat.

  3. Ha a mintát egy vagy több gép közötti konfigurációban szeretné futtatni, kövesse a Windows Communication Foundation-minták futtatásával kapcsolatos utasításokat.