Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Das Beispiel "Adressheader" veranschaulicht, wie Clients Referenzparameter mithilfe von Windows Communication Foundation (WCF) an einen Dienst übergeben können.
Hinweis
Die Einrichtungsverfahren und Build-Anweisungen für dieses Beispiel befinden sich am Ende dieses Themas.
Die WS-Addressing Spezifikation definiert den Begriff eines Endpunktverweises als Methode zum Adressieren eines bestimmten Webdienstendpunkts. In WCF werden Endpunktverweise mithilfe der EndpointAddress Klasse modelliert – EndpointAddress ist der Typ des Adressfelds der ServiceEndpoint Klasse.
Teil des Endpunktverweismodells besteht darin, dass jeder Verweis einige Referenzparameter enthalten kann, die zusätzliche identifizierende Informationen hinzufügen. In WCF werden diese Referenzparameter als Klasseninstanzen AddressHeader modelliert.
In diesem Beispiel fügt der Client dem EndpointAddress Clientendpunkt einen Verweisparameter hinzu. Der Dienst sucht nach diesem Referenzparameter und verwendet seinen Wert in der Logik des "Hello"-Dienstvorgangs.
Kunde
Damit der Client einen Verweisparameter sendet, muss er ein AddressHeader zu dem EndpointAddress des ServiceEndpoint hinzufügen. Da die Klasse unveränderlich ist, muss die EndpointAddress Änderung einer Endpunktadresse mithilfe der EndpointAddressBuilder Klasse erfolgen. Mit dem folgenden Code wird der Client initialisiert, um einen Verweisparameter als Teil der Nachricht zu senden.
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();
Der Code erstellt ein EndpointAddressBuilder unter Verwendung des Originalwertes EndpointAddress als Anfangswert. Anschließend wird eine neu erstellte Adresskopfzeile hinzugefügt. Der Aufruf an CreateAddressHeader erstellt einen Header mit einem bestimmten Namen, Namespace und Wert. Hier ist der Wert "John". Sobald der Header dem Generator hinzugefügt wurde, wandelt die ToEndpointAddress() Methode den (mutierbaren) Generator wieder in eine (unveränderliche) Endpunktadresse um, die dem Adressfeld des Clientendpunkts zurück zugewiesen wird.
Wenn der Client nun aufruft Console.WriteLine(client.Hello());, kann der Dienst den Wert dieses Adressparameters abrufen, wie in der resultierenden Ausgabe des Clients zu sehen ist.
Hello, John
Server
Die Implementierung des Dienstvorgangs Hello() verwendet den aktuellen OperationContext , um die Werte der Kopfzeilen in der eingehenden Nachricht zu prüfen.
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;
Der Code durchläuft alle Kopfzeilen der eingehenden Nachricht und sucht nach Kopfzeilen, die Referenzparameter mit einem bestimmten Namen enthalten. Wenn der Parameter gefunden wird, liest er den Wert des Parameters und speichert ihn in der Variablen "id".
So können Sie das Beispiel einrichten, erstellen und ausführen
Stellen Sie sicher, dass Sie das One-Time Setup-Verfahren für die Windows Communication Foundation-Beispieleausgeführt haben.
Um die C#- oder Visual Basic .NET-Edition der Lösung zu erstellen, befolgen Sie die Anweisungen in Building the Windows Communication Foundation Samples.
Wenn Sie das Beispiel in einer Konfiguration mit einem Computer oder über Computer hinweg ausführen möchten, folgen Sie den Anweisungen unter Durchführen der Windows Communication Foundation-Beispiele.