位址標頭

位址標頭範例會示範用戶端如何將參考參數傳遞至使用 Windows Communication Foundation (WCF) 的服務。

Aa395213.note(zh-tw,VS.90).gif注意:
此範例的安裝程序與建置指示位於本主題的結尾。

WS-Addressing 規格會將端點參考的概念定義成針對特定 Web 服務端點的定址方式。在 WCF 中,端點參考會使用 EndpointAddress 類別模型化,而 EndpointAddressServiceEndpoint 類別之 [位址] 欄位的類型。

端點參考模型的一部分,是每個參考可以包含一些會新增額外識別資訊的參考參數。在 WCF 中,這些參考參數會模型化為 AddressHeader 類別的執行個體。

在這個範例中,用戶端會新增用戶端端點之 EndpointAddress 的參考參數。服務會尋找這個參考參數,然後在其 "Hello" 服務作業的邏輯中使用這個參數的值。

用戶端

對於要傳送參考參數的用戶端,它必須將 AddressHeader 新增至 ServiceEndpointEndpointAddress。因為 EndpointAddress 類別是不變的,所以必須使用 EndpointAddressBuilder 類別才能修改端點位址。下列程式碼會初始化用戶端,以便將參考參數當做其訊息部分來傳送。

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

這段程式碼會建立以原始 EndpointAddress 做為初始值的 EndpointAddressBuilder。接下來,它會加入新建的位址標頭;呼叫具有特定名稱、命名空間與值的 CreateAddressHeadercreates 標頭。此時的值為 "John"。一旦標頭新增至產生器後,ToEndpointAddress() 方法便會將產生器 (可變的) 轉換回端點位址 (不變的),此位址已指派回該用戶端端點的 [位址] 欄位。

現在,當用戶端呼叫 Console.WriteLine(client.Hello()); 時,服務就能夠取得這個位址參數的值,即顯示於用戶端結果輸出中的值。

Hello, John

伺服器

服務作業 Hello() 的實作會使用目前 OperationContext,檢查傳入訊息上的標頭值。

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;

這段程式碼會逐一查看傳入訊息上的所有標頭,以便尋找屬於含有特定名稱之參考參數的標頭。如果有找到該參數,它會讀取參數的值,然後將該值儲存在 "id" 變數中。

若要設定、建置及執行範例

  1. 請確定您已執行 Windows Communication Foundation 範例的單次安裝程序

  2. 若要建置方案的 C# 或 Visual Basic .NET 版本,請遵循建置 Windows Communication Foundation 範例中的指示。

  3. 若要在單一或跨電腦的組態中執行本範例,請遵循執行 Windows Communication Foundation 範例中的指示。

Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.