MetadataResolver 類別

定義

擷取及匯入做為 ServiceEndpoint 物件的中繼資料。

public ref class MetadataResolver abstract sealed
public static class MetadataResolver
type MetadataResolver = class
Public Class MetadataResolver
繼承
MetadataResolver

範例

下列程式碼範例會示範如何使用 MetadataResolver 類別,將中繼資料當做 ServiceEndpoint 物件集合傳回,接著用來連接至服務執行個體。

// Get the endpoints for such a service
ServiceEndpointCollection endpoints = MetadataResolver.Resolve(typeof(SampleServiceClient), metaAddress);
Console.WriteLine("Trying all available WS-Transfer metadata endpoints...");

foreach (ServiceEndpoint point in endpoints)
{
    if (point != null)
    {
        // Create a new wcfClient using retrieved endpoints.
        wcfClient = new SampleServiceClient(point.Binding, point.Address);
        Console.WriteLine(
          wcfClient.SampleMethod("Client used the "
          + point.Address.ToString()
          + " address.")
        );
        wcfClient.Close();
    }
}

下列程式碼範例會示範如何透過 HTTP GET 要求而非 WS-Transfer,使用 MetadataResolver 下載中繼資料並將中繼資料當做 ServiceEndpoint 物件集合傳回。

// Get the endpoints for such a service using Http/Get request
endpoints = MetadataResolver.Resolve(typeof(SampleServiceClient), httpGetMetaAddress.Uri, MetadataExchangeClientMode.HttpGet);
Client.WriteParameters(endpoints);
ISampleService serviceChannel;
Console.WriteLine(
  "\r\nTrying all endpoints from HTTP/Get and with direct service channels...");

foreach (ServiceEndpoint point in endpoints)
{
    if (point != null)
    {
        ChannelFactory<ISampleService> factory = new ChannelFactory<ISampleService>(point.Binding);
        factory.Endpoint.Address = point.Address;
        serviceChannel = factory.CreateChannel();
        Console.WriteLine("Client used the " + point.Address.ToString() + " address.");
        Console.WriteLine(
          serviceChannel.SampleMethod(
            "Client used the " + point.Address.ToString() + " address."
          )
        );
        factory.Close();
    }
}

備註

您可以使用 MetadataResolver 類別,快速地從中繼資料匯入服務的端點。 這個類別會下載中繼資料,並將它轉換為 ServiceEndpoint 物件。 若要下載中繼資料並處理該資訊以做為 System.ServiceModel.Description.MetadataSet,請參閱 System.ServiceModel.Description.MetadataExchangeClient

方法

BeginResolve(IEnumerable<ContractDescription>, EndpointAddress, AsyncCallback, Object)

使用指定的位址和非同步狀態與委派,開始非同步呼叫以將中繼資料位址解析成指定之合約的 ServiceEndpoint 物件。

BeginResolve(IEnumerable<ContractDescription>, EndpointAddress, MetadataExchangeClient, AsyncCallback, Object)

使用指定的位址、ServiceEndpoint、非同步狀態與委派,開始非同步呼叫以將中繼資料位址解析成指定之合約的 MetadataExchangeClient 物件。

BeginResolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode, AsyncCallback, Object)

使用指定的位址、ServiceEndpoint 值、非同步狀態與委派,開始非同步呼叫以將中繼資料位址解析成指定之合約的 MetadataExchangeClientMode 物件。

BeginResolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode, MetadataExchangeClient, AsyncCallback, Object)

使用指定的位址、ServiceEndpointMetadataExchangeClient、非同步狀態與委派,開始非同步呼叫以將中繼資料位址解析成指定之合約的 MetadataExchangeClientMode 物件。

BeginResolve(Type, EndpointAddress, AsyncCallback, Object)

使用指定的位址和非同步狀態與委派,開始非同步呼叫以將中繼資料位址解析成指定之合約的 ServiceEndpoint 物件。

BeginResolve(Type, Uri, MetadataExchangeClientMode, AsyncCallback, Object)

使用指定的位址、ServiceEndpoint、非同步狀態與委派,開始非同步呼叫以將中繼資料位址解析成指定之合約的 MetadataExchangeClientMode 物件。

EndResolve(IAsyncResult)

完成非同步呼叫,以將中繼資料解析成端點集合。

Resolve(IEnumerable<ContractDescription>, EndpointAddress)

使用指定的中繼資料位址,將中繼資料位址解析成指定之合約的 ServiceEndpoint 物件。

Resolve(IEnumerable<ContractDescription>, EndpointAddress, MetadataExchangeClient)

使用指定的中繼資料位址和 ServiceEndpoint,將中繼資料位址解析成指定之合約的 MetadataExchangeClient 物件。

Resolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode)

使用指定的位址和傳輸模式,將中繼資料位址解析成指定之合約的 ServiceEndpoint 物件。

Resolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode, MetadataExchangeClient)

使用指定的位址、傳輸模式和傳輸用戶端,將中繼資料位址解析成指定之合約的 ServiceEndpoint 物件。

Resolve(Type, EndpointAddress)

針對指定位址的指定合約下載中繼資料位址,並解析成 ServiceEndpoint 物件集合。

Resolve(Type, Uri, MetadataExchangeClientMode)

使用指定的位址和傳輸模式,將中繼資料位址解析成指定之合約的 ServiceEndpoint 物件。

適用於