MetadataResolver.Resolve Méthode

Définition

Télécharge et résout une adresse de métadonnées en objets ServiceEndpoint pour ce service.

Surcharges

Resolve(IEnumerable<ContractDescription>, EndpointAddress)

Résout une adresse de métadonnées en objets ServiceEndpoint pour les contrats spécifiés à l'aide de l'adresse de métadonnées spécifiée.

Resolve(Type, EndpointAddress)

Télécharge et résout une adresse de métadonnées en une collection d'objets ServiceEndpoint pour un contrat spécifique à une adresse donnée.

Resolve(IEnumerable<ContractDescription>, EndpointAddress, MetadataExchangeClient)

Résout une adresse de métadonnées en objets ServiceEndpoint pour les contrats spécifiés à l'aide de l'adresse de métadonnées et du MetadataExchangeClient spécifiés.

Resolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode)

Résout une adresse de métadonnées en objets ServiceEndpoint pour les contrats spécifiés à l'aide de l'adresse de métadonnées et du mode de transfert spécifiés.

Resolve(Type, Uri, MetadataExchangeClientMode)

Résout une adresse de métadonnées en objets ServiceEndpoint pour le contrat spécifié à l'aide de l'adresse de métadonnées et du mode de transfert spécifiés.

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

Résout une adresse de métadonnées en objets ServiceEndpoint pour les contrats spécifiés à l'aide de l'adresse de métadonnées, du mode de transfert et du client de transfert spécifiés.

Remarques

Pour télécharger des métadonnées sans résoudre les informations en objets ServiceEndpoint, faites directement appel à System.ServiceModel.Description.MetadataExchangeClient.

Pour toutes les méthodes Resolve synchrones et asynchrones, une collection vide est retournée si aucun point de terminaison n'est importé ou si aucun point de terminaison ne correspond au contrat. Si une collection vide est retournée, un suivi d’avertissement est écrit.

Resolve(IEnumerable<ContractDescription>, EndpointAddress)

Résout une adresse de métadonnées en objets ServiceEndpoint pour les contrats spécifiés à l'aide de l'adresse de métadonnées spécifiée.

C#
public static System.ServiceModel.Description.ServiceEndpointCollection Resolve (System.Collections.Generic.IEnumerable<System.ServiceModel.Description.ContractDescription> contracts, System.ServiceModel.EndpointAddress address);

Paramètres

contracts
IEnumerable<ContractDescription>

Contrats pour lesquels des métadonnées doivent être téléchargées et résolues.

address
EndpointAddress

Adresse des métadonnées.

Retours

ServiceEndpointCollection

Collection d'objets ServiceEndpoint pour le contrat spécifié.

Exceptions

L'adresse ou la collection de contrats a la valeur null.

contracts est vide, au moins un membre de contracts a la valeur null ou contracts contient plusieurs contrats portant le même nom et le même espace de noms.

Remarques

Les paramètres par défaut de System.ServiceModel.Description.MetadataExchangeClient sont utilisés pour récupérer les métadonnées et le System.ServiceModel.Description.MetadataExchangeClientMode par défaut correspond à MetadataExchangeClientMode.MetadataExchange.

Pour télécharger des métadonnées sans résoudre les informations en objets ServiceEndpoint, faites directement appel à System.ServiceModel.Description.MetadataExchangeClient.

Note

Une collection vide est retournée si aucun point de terminaison n’est importé ou si aucun point de terminaison ne correspond au contrat. Si une collection vide est retournée, un suivi d’avertissement est écrit.

S’applique à

.NET Framework 4.8 et autres versions
Produit Versions
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8

Resolve(Type, EndpointAddress)

Télécharge et résout une adresse de métadonnées en une collection d'objets ServiceEndpoint pour un contrat spécifique à une adresse donnée.

C#
public static System.ServiceModel.Description.ServiceEndpointCollection Resolve (Type contract, System.ServiceModel.EndpointAddress address);

Paramètres

contract
Type

Contrats pour lesquels des métadonnées doivent être téléchargées et résolues.

address
EndpointAddress

Adresse des métadonnées.

Retours

ServiceEndpointCollection

Collection d'objets ServiceEndpoint pour le contrat spécifié.

Exceptions

L'adresse ou le contrat a la valeur null.

Exemples

L'exemple de code suivant indique comment utiliser la classe MetadataResolver pour retourner des métadonnées en tant que collection d'objets ServiceEndpoint qui servent ensuite à se connecter à une instance de service.

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

Remarques

Utilisez la méthode Resolve pour spécifier le contrat et l'adresse des métadonnées à utiliser lors du téléchargement et de la résolution de métadonnées.

Les paramètres par défaut de System.ServiceModel.Description.MetadataExchangeClient sont utilisés pour récupérer les métadonnées et le System.ServiceModel.Description.MetadataExchangeClientMode par défaut correspond à MetadataExchangeClientMode.MetadataExchange.

Pour télécharger des métadonnées sans résoudre les informations en objets ServiceEndpoint, faites directement appel à System.ServiceModel.Description.MetadataExchangeClient.

Note

Une collection vide est retournée si aucun point de terminaison n’est importé ou si aucun point de terminaison ne correspond au contrat. Si une collection vide est retournée, un suivi d’avertissement est écrit.

Cette méthode vous oblige à spécifier un type de contrat. Vous pouvez spécifier le contrat en déclarant l’interface de service dans le code client ou en utilisant un client WCF généré par Svcutil.exe. Si l’interface change (ajout d’une nouvelle opération, par exemple), vous devez mettre à jour l’interface dans le code client ou générer un nouveau client WCF. Ne pas procéder ainsi entraîne la levée d'une exception. Supposons que vous disposiez d'un service implémentant un contrat de service appelé ICalculator qui définit Add(), Sub(), Mult() et Div(). Vous créez une application cliente et générez un client WCF. Vous ajoutez ensuite une méthode à ICalculator, appelée Echo(). Si vous écrivez ensuite une application qui appelle Resolve(Type, EndpointAddress) sans générer de nouveau client WCF, vous obtenez l’exception suivante.

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

S’applique à

.NET Framework 4.8 et autres versions
Produit Versions
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8

Resolve(IEnumerable<ContractDescription>, EndpointAddress, MetadataExchangeClient)

Résout une adresse de métadonnées en objets ServiceEndpoint pour les contrats spécifiés à l'aide de l'adresse de métadonnées et du MetadataExchangeClient spécifiés.

C#
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);

Paramètres

contracts
IEnumerable<ContractDescription>

Contrats pour lesquels des métadonnées doivent être téléchargées et résolues.

address
EndpointAddress

Adresse des métadonnées.

client
MetadataExchangeClient

MetadataExchangeClient utilisé pour récupérer les métadonnées.

Retours

ServiceEndpointCollection

Collection d'objets ServiceEndpoint pour le contrat spécifié.

Exceptions

L'adresse, la collection de contrats ou le client a la valeur null.

contracts est vide, au moins un membre de contracts a la valeur null ou contracts contient plusieurs contrats portant le même nom et le même espace de noms.

Remarques

La valeur par défaut de System.ServiceModel.Description.MetadataExchangeClientMode est MetadataExchangeClientMode.MetadataExchange.

Pour télécharger des métadonnées sans résoudre les informations en objets ServiceEndpoint, faites directement appel à System.ServiceModel.Description.MetadataExchangeClient.

Note

Une collection vide est retournée si aucun point de terminaison n’est importé ou si aucun point de terminaison ne correspond au contrat. Si une collection vide est retournée, un suivi d’avertissement est écrit.

S’applique à

.NET Framework 4.8 et autres versions
Produit Versions
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8

Resolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode)

Résout une adresse de métadonnées en objets ServiceEndpoint pour les contrats spécifiés à l'aide de l'adresse de métadonnées et du mode de transfert spécifiés.

C#
public static System.ServiceModel.Description.ServiceEndpointCollection Resolve (System.Collections.Generic.IEnumerable<System.ServiceModel.Description.ContractDescription> contracts, Uri address, System.ServiceModel.Description.MetadataExchangeClientMode mode);

Paramètres

contracts
IEnumerable<ContractDescription>

Contrats pour lesquels des métadonnées doivent être téléchargées et résolues.

address
Uri

Adresse des métadonnées.

mode
MetadataExchangeClientMode

Mode de récupération.

Retours

ServiceEndpointCollection

Collection d'objets ServiceEndpoint pour le contrat spécifié.

Exceptions

L'adresse ou la collection de contrats a la valeur null.

contracts est vide, au moins un membre de contracts a la valeur null ou contracts contient plusieurs contrats portant le même nom et le même espace de noms.

Remarques

Les paramètres par défaut de System.ServiceModel.Description.MetadataExchangeClient sont utilisés pour récupérer les métadonnées.

Pour télécharger des métadonnées sans résoudre les informations en objets ServiceEndpoint, faites directement appel à System.ServiceModel.Description.MetadataExchangeClient.

Note

Une collection vide est retournée si aucun point de terminaison n’est importé ou si aucun point de terminaison ne correspond au contrat. Si une collection vide est retournée, un suivi d’avertissement est écrit.

S’applique à

.NET Framework 4.8 et autres versions
Produit Versions
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8

Resolve(Type, Uri, MetadataExchangeClientMode)

Résout une adresse de métadonnées en objets ServiceEndpoint pour le contrat spécifié à l'aide de l'adresse de métadonnées et du mode de transfert spécifiés.

C#
public static System.ServiceModel.Description.ServiceEndpointCollection Resolve (Type contract, Uri address, System.ServiceModel.Description.MetadataExchangeClientMode mode);

Paramètres

contract
Type

Contrat pour lequel des métadonnées doivent être téléchargées et résolues.

address
Uri

Adresse des métadonnées.

mode
MetadataExchangeClientMode

Mode de récupération.

Retours

ServiceEndpointCollection

Collection d'objets ServiceEndpoint pour le contrat spécifié.

Exceptions

L'adresse ou le contrat a la valeur null.

Exemples

L’exemple de code suivant met en œuvre MetadataResolver pour télécharger et retourner des métadonnées sous forme de collection d’objets ServiceEndpoint à l’aide d’une demande HTTP GET, au lieu de WS-Transfer.

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

Remarques

Utilisez la méthode Resolve pour spécifier le contrat, l'adresse et le mécanisme de téléchargement à utiliser.

Les paramètres par défaut de System.ServiceModel.Description.MetadataExchangeClient sont utilisés pour récupérer les métadonnées.

Pour télécharger des métadonnées sans résoudre les informations en objets ServiceEndpoint, faites directement appel à System.ServiceModel.Description.MetadataExchangeClient.

Note

Une collection vide est retournée si aucun point de terminaison n’est importé ou si aucun point de terminaison ne correspond au contrat. Si une collection vide est retournée, un suivi d’avertissement est écrit.

S’applique à

.NET Framework 4.8 et autres versions
Produit Versions
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8

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

Résout une adresse de métadonnées en objets ServiceEndpoint pour les contrats spécifiés à l'aide de l'adresse de métadonnées, du mode de transfert et du client de transfert spécifiés.

C#
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);

Paramètres

contracts
IEnumerable<ContractDescription>

Contrats pour lesquels des métadonnées doivent être téléchargées et résolues.

address
Uri

Adresse des métadonnées.

mode
MetadataExchangeClientMode

Mode de récupération.

client
MetadataExchangeClient

MetadataExchangeClient utilisé pour récupérer les métadonnées.

Retours

ServiceEndpointCollection

Collection d'objets ServiceEndpoint pour le contrat spécifié.

Exceptions

L'adresse, la collection de contrats ou le client a la valeur null.

contracts est vide, au moins un membre de contracts a la valeur null ou contracts contient plusieurs contrats portant le même nom et le même espace de noms.

Remarques

Pour télécharger des métadonnées sans résoudre les informations en objets ServiceEndpoint, faites directement appel à System.ServiceModel.Description.MetadataExchangeClient.

Note

Une collection vide est retournée si aucun point de terminaison n’est importé ou si aucun point de terminaison ne correspond au contrat. Si une collection vide est retournée, un suivi d’avertissement est écrit.

S’applique à

.NET Framework 4.8 et autres versions
Produit Versions
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8