次の方法で共有


MetadataResolver.Resolve メソッド

定義

メタデータ アドレスをダウンロードし、そのサービスの ServiceEndpoint オブジェクトに解決します。

オーバーロード

Resolve(IEnumerable<ContractDescription>, EndpointAddress)

指定したメタデータ アドレスを使用して、指定したコントラクトのメタデータ アドレスをそのコントラクトの ServiceEndpoint オブジェクトに解決します。

Resolve(Type, EndpointAddress)

指定したアドレスを使用して、指定したコントラクトのメタデータ アドレスをダウンロードし、そのコントラクトの ServiceEndpoint オブジェクトのコレクションに解決します。

Resolve(IEnumerable<ContractDescription>, EndpointAddress, MetadataExchangeClient)

指定したメタデータ アドレスと ServiceEndpoint を使用して、指定したコントラクトのメタデータ アドレスをそのコントラクトの MetadataExchangeClient オブジェクトに解決します。

Resolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode)

指定したアドレスと転送モードを使用して、指定したコントラクトのメタデータ アドレスをそのコントラクトの ServiceEndpoint オブジェクトに解決します。

Resolve(Type, Uri, MetadataExchangeClientMode)

指定したアドレスと転送モードを使用して、指定したコントラクトのメタデータ アドレスをそのコントラクトの ServiceEndpoint オブジェクトに解決します。

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

指定したアドレス、転送モード、および転送クライアントを使用して、指定したコントラクトのメタデータ アドレスをそのコントラクトの ServiceEndpoint オブジェクトに解決します。

注釈

メタデータのダウンロードだけを行い、その情報を複数の ServiceEndpoint オブジェクトに分割しない場合は、System.ServiceModel.Description.MetadataExchangeClient を直接使用します。

同期および非同期のすべての Resolve メソッドでは、エンドポイントがインポートされなかった場合や、コントラクトに一致するエンドポイントが存在しない場合、空のコレクションが返されます。 空のコレクションが返される場合は、警告トレースが出力されます。

Resolve(IEnumerable<ContractDescription>, EndpointAddress)

指定したメタデータ アドレスを使用して、指定したコントラクトのメタデータ アドレスをそのコントラクトの ServiceEndpoint オブジェクトに解決します。

public:
 static System::ServiceModel::Description::ServiceEndpointCollection ^ Resolve(System::Collections::Generic::IEnumerable<System::ServiceModel::Description::ContractDescription ^> ^ contracts, System::ServiceModel::EndpointAddress ^ address);
public static System.ServiceModel.Description.ServiceEndpointCollection Resolve (System.Collections.Generic.IEnumerable<System.ServiceModel.Description.ContractDescription> contracts, System.ServiceModel.EndpointAddress address);
static member Resolve : seq<System.ServiceModel.Description.ContractDescription> * System.ServiceModel.EndpointAddress -> System.ServiceModel.Description.ServiceEndpointCollection
Public Shared Function Resolve (contracts As IEnumerable(Of ContractDescription), address As EndpointAddress) As ServiceEndpointCollection

パラメーター

contracts
IEnumerable<ContractDescription>

メタデータのダウンロードおよび解決が行われるコントラクト。

address
EndpointAddress

メタデータ アドレス。

戻り値

ServiceEndpointCollection

指定したコントラクト用の ServiceEndpoint オブジェクトのコレクション。

例外

アドレスまたはコントラクトのコレクションが null です。

contracts が空か、contracts の 1 つ以上のメンバーが null か、または contracts に同じ名前と名前空間のコントラクトが複数含まれています。

注釈

System.ServiceModel.Description.MetadataExchangeClient の既定の設定はメタデータの取得に使用されます。また、既定の System.ServiceModel.Description.MetadataExchangeClientModeMetadataExchangeClientMode.MetadataExchange です。

メタデータのダウンロードだけを行い、その情報を複数の ServiceEndpoint オブジェクトに分割しない場合は、System.ServiceModel.Description.MetadataExchangeClient を直接使用します。

注意

エンドポイントがインポートされなかった場合や、コントラクトに一致するエンドポイントが存在しない場合、空のコレクションが返されます。 空のコレクションが返される場合は、警告トレースが出力されます。

適用対象

Resolve(Type, EndpointAddress)

指定したアドレスを使用して、指定したコントラクトのメタデータ アドレスをダウンロードし、そのコントラクトの ServiceEndpoint オブジェクトのコレクションに解決します。

public:
 static System::ServiceModel::Description::ServiceEndpointCollection ^ Resolve(Type ^ contract, System::ServiceModel::EndpointAddress ^ address);
public static System.ServiceModel.Description.ServiceEndpointCollection Resolve (Type contract, System.ServiceModel.EndpointAddress address);
static member Resolve : Type * System.ServiceModel.EndpointAddress -> System.ServiceModel.Description.ServiceEndpointCollection
Public Shared Function Resolve (contract As Type, address As EndpointAddress) As ServiceEndpointCollection

パラメーター

contract
Type

メタデータのダウンロードおよび解決が行われるコントラクト。

address
EndpointAddress

メタデータ アドレス。

戻り値

ServiceEndpointCollection

指定したコントラクト用の ServiceEndpoint オブジェクトのコレクション。

例外

アドレスまたはコントラクトが null です。

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

注釈

Resolve メソッドを使用して、メタデータをダウンロードして解決するときに使用するコントラクトとメタデータ アドレスを指定します。

System.ServiceModel.Description.MetadataExchangeClient の既定の設定はメタデータの取得に使用されます。また、既定の System.ServiceModel.Description.MetadataExchangeClientModeMetadataExchangeClientMode.MetadataExchange です。

メタデータのダウンロードだけを行い、その情報を複数の ServiceEndpoint オブジェクトに分割しない場合は、System.ServiceModel.Description.MetadataExchangeClient を直接使用します。

注意

エンドポイントがインポートされなかった場合や、コントラクトに一致するエンドポイントが存在しない場合、空のコレクションが返されます。 空のコレクションが返される場合は、警告トレースが出力されます。

このメソッドでは、コントラクトの型を指定する必要があります。 コントラクトを指定するには、クライアント コードでサービス インターフェイスを宣言するか、Svcutil.exeによって生成された WCF クライアントを使用します。 インターフェイスが変更された場合 (新しい操作の追加など)、クライアント コードでインターフェイスを更新するか、新しい WCF クライアントを生成する必要があります。 いずれの操作も実行しない場合は、例外がスローされます。 たとえば、Add()、Sub()、Mult()、および Div() を定義した ICalculator というサービス コントラクトを実装しているサービスがあるとします。 クライアント アプリケーションを作成し、WCF クライアントを生成します。 次に、Echo() というメソッドを ICalculator に追加します。 その後、新しい WCF クライアントを生成せずに呼び出す Resolve(Type, EndpointAddress) アプリケーションを記述すると、次の例外が発生します。

Unhandled Exception: System.ServiceModel.Description.WsdlImporter+WsdlImportException: Cannot locate operation Echo in Contract ICalculator.

適用対象

Resolve(IEnumerable<ContractDescription>, EndpointAddress, MetadataExchangeClient)

指定したメタデータ アドレスと ServiceEndpoint を使用して、指定したコントラクトのメタデータ アドレスをそのコントラクトの MetadataExchangeClient オブジェクトに解決します。

public:
 static System::ServiceModel::Description::ServiceEndpointCollection ^ Resolve(System::Collections::Generic::IEnumerable<System::ServiceModel::Description::ContractDescription ^> ^ contracts, System::ServiceModel::EndpointAddress ^ address, System::ServiceModel::Description::MetadataExchangeClient ^ client);
public static System.ServiceModel.Description.ServiceEndpointCollection Resolve (System.Collections.Generic.IEnumerable<System.ServiceModel.Description.ContractDescription> contracts, System.ServiceModel.EndpointAddress address, System.ServiceModel.Description.MetadataExchangeClient client);
static member Resolve : seq<System.ServiceModel.Description.ContractDescription> * System.ServiceModel.EndpointAddress * System.ServiceModel.Description.MetadataExchangeClient -> System.ServiceModel.Description.ServiceEndpointCollection
Public Shared Function Resolve (contracts As IEnumerable(Of ContractDescription), address As EndpointAddress, client As MetadataExchangeClient) As ServiceEndpointCollection

パラメーター

contracts
IEnumerable<ContractDescription>

メタデータのダウンロードおよび解決が行われるコントラクト。

address
EndpointAddress

メタデータ アドレス。

client
MetadataExchangeClient

メタデータの取得に使用される MetadataExchangeClient

戻り値

ServiceEndpointCollection

指定したコントラクト用の ServiceEndpoint オブジェクトのコレクション。

例外

アドレス、コントラクトのコレクション、またはクライアントが null です。

contracts が空か、contracts の 1 つ以上のメンバーが null か、または contracts に同じ名前と名前空間のコントラクトが複数含まれています。

注釈

既定の System.ServiceModel.Description.MetadataExchangeClientModeMetadataExchangeClientMode.MetadataExchange です。

メタデータのダウンロードだけを行い、その情報を複数の ServiceEndpoint オブジェクトに分割しない場合は、System.ServiceModel.Description.MetadataExchangeClient を直接使用します。

注意

エンドポイントがインポートされなかった場合や、コントラクトに一致するエンドポイントが存在しない場合、空のコレクションが返されます。 空のコレクションが返される場合は、警告トレースが出力されます。

適用対象

Resolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode)

指定したアドレスと転送モードを使用して、指定したコントラクトのメタデータ アドレスをそのコントラクトの ServiceEndpoint オブジェクトに解決します。

public:
 static System::ServiceModel::Description::ServiceEndpointCollection ^ Resolve(System::Collections::Generic::IEnumerable<System::ServiceModel::Description::ContractDescription ^> ^ contracts, Uri ^ address, System::ServiceModel::Description::MetadataExchangeClientMode mode);
public static System.ServiceModel.Description.ServiceEndpointCollection Resolve (System.Collections.Generic.IEnumerable<System.ServiceModel.Description.ContractDescription> contracts, Uri address, System.ServiceModel.Description.MetadataExchangeClientMode mode);
static member Resolve : seq<System.ServiceModel.Description.ContractDescription> * Uri * System.ServiceModel.Description.MetadataExchangeClientMode -> System.ServiceModel.Description.ServiceEndpointCollection
Public Shared Function Resolve (contracts As IEnumerable(Of ContractDescription), address As Uri, mode As MetadataExchangeClientMode) As ServiceEndpointCollection

パラメーター

contracts
IEnumerable<ContractDescription>

メタデータのダウンロードおよび解決が行われるコントラクト。

address
Uri

メタデータ アドレス。

mode
MetadataExchangeClientMode

取得のモード。

戻り値

ServiceEndpointCollection

指定したコントラクト用の ServiceEndpoint オブジェクトのコレクション。

例外

アドレスまたはコントラクトのコレクションが null です。

contracts が空か、contracts の 1 つ以上のメンバーが null か、または contracts に同じ名前と名前空間のコントラクトが複数含まれています。

注釈

System.ServiceModel.Description.MetadataExchangeClient の既定の設定は、メタデータの取得に使用されます。

メタデータのダウンロードだけを行い、その情報を複数の ServiceEndpoint オブジェクトに分割しない場合は、System.ServiceModel.Description.MetadataExchangeClient を直接使用します。

注意

エンドポイントがインポートされなかった場合や、コントラクトに一致するエンドポイントが存在しない場合、空のコレクションが返されます。 空のコレクションが返される場合は、警告トレースが出力されます。

適用対象

Resolve(Type, Uri, MetadataExchangeClientMode)

指定したアドレスと転送モードを使用して、指定したコントラクトのメタデータ アドレスをそのコントラクトの ServiceEndpoint オブジェクトに解決します。

public:
 static System::ServiceModel::Description::ServiceEndpointCollection ^ Resolve(Type ^ contract, Uri ^ address, System::ServiceModel::Description::MetadataExchangeClientMode mode);
public static System.ServiceModel.Description.ServiceEndpointCollection Resolve (Type contract, Uri address, System.ServiceModel.Description.MetadataExchangeClientMode mode);
static member Resolve : Type * Uri * System.ServiceModel.Description.MetadataExchangeClientMode -> System.ServiceModel.Description.ServiceEndpointCollection
Public Shared Function Resolve (contract As Type, address As Uri, mode As MetadataExchangeClientMode) As ServiceEndpointCollection

パラメーター

contract
Type

メタデータのダウンロードおよび解決が行われるコントラクト。

address
Uri

メタデータ アドレス。

mode
MetadataExchangeClientMode

取得のモード。

戻り値

ServiceEndpointCollection

指定したコントラクト用の ServiceEndpoint オブジェクトのコレクション。

例外

アドレスまたはコントラクトが null です。

WS-Transfer ではなく HTTP GET 要求で、メタデータをダウンロードし、それを 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();
    }
}

注釈

Resolve メソッドを使用して、使用するコントラクト、アドレス、およびダウンロード メカニズムを指定します。

System.ServiceModel.Description.MetadataExchangeClient の既定の設定は、メタデータの取得に使用されます。

メタデータのダウンロードだけを行い、その情報を複数の ServiceEndpoint オブジェクトに分割しない場合は、System.ServiceModel.Description.MetadataExchangeClient を直接使用します。

注意

エンドポイントがインポートされなかった場合や、コントラクトに一致するエンドポイントが存在しない場合、空のコレクションが返されます。 空のコレクションが返される場合は、警告トレースが出力されます。

適用対象

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

指定したアドレス、転送モード、および転送クライアントを使用して、指定したコントラクトのメタデータ アドレスをそのコントラクトの ServiceEndpoint オブジェクトに解決します。

public:
 static System::ServiceModel::Description::ServiceEndpointCollection ^ Resolve(System::Collections::Generic::IEnumerable<System::ServiceModel::Description::ContractDescription ^> ^ contracts, Uri ^ address, System::ServiceModel::Description::MetadataExchangeClientMode mode, System::ServiceModel::Description::MetadataExchangeClient ^ client);
public static System.ServiceModel.Description.ServiceEndpointCollection Resolve (System.Collections.Generic.IEnumerable<System.ServiceModel.Description.ContractDescription> contracts, Uri address, System.ServiceModel.Description.MetadataExchangeClientMode mode, System.ServiceModel.Description.MetadataExchangeClient client);
static member Resolve : seq<System.ServiceModel.Description.ContractDescription> * Uri * System.ServiceModel.Description.MetadataExchangeClientMode * System.ServiceModel.Description.MetadataExchangeClient -> System.ServiceModel.Description.ServiceEndpointCollection
Public Shared Function Resolve (contracts As IEnumerable(Of ContractDescription), address As Uri, mode As MetadataExchangeClientMode, client As MetadataExchangeClient) As ServiceEndpointCollection

パラメーター

contracts
IEnumerable<ContractDescription>

メタデータのダウンロードおよび解決が行われるコントラクト。

address
Uri

メタデータ アドレス。

mode
MetadataExchangeClientMode

取得のモード。

client
MetadataExchangeClient

メタデータの取得に使用される MetadataExchangeClient

戻り値

ServiceEndpointCollection

指定したコントラクト用の ServiceEndpoint オブジェクトのコレクション。

例外

アドレス、コントラクトのコレクション、またはクライアントが null です。

contracts が空か、contracts の 1 つ以上のメンバーが null か、または contracts に同じ名前と名前空間のコントラクトが複数含まれています。

注釈

メタデータのダウンロードだけを行い、その情報を複数の ServiceEndpoint オブジェクトに分割しない場合は、System.ServiceModel.Description.MetadataExchangeClient を直接使用します。

注意

エンドポイントがインポートされなかった場合や、コントラクトに一致するエンドポイントが存在しない場合、空のコレクションが返されます。 空のコレクションが返される場合は、警告トレースが出力されます。

適用対象