Freigeben über


MetadataResolver.Resolve Methode

Definition

Lädt eine Metadatenadresse herunter und löst diese in ServiceEndpoint-Objekte für diesen Dienst auf.

Überlädt

Resolve(IEnumerable<ContractDescription>, EndpointAddress)

Löst eine Metadatenadresse in die ServiceEndpoint-Objekte für den angegebenen Vertrag unter Verwendung der angegebenen Metadatenadresse auf.

Resolve(Type, EndpointAddress)

Lädt eine Metadatenadresse herunter und löst diese in eine Auflistung von ServiceEndpoint-Objekten für einen angegebenen Vertrag an einer spezifischen Adresse auf.

Resolve(IEnumerable<ContractDescription>, EndpointAddress, MetadataExchangeClient)

Löst eine Metadatenadresse in die ServiceEndpoint-Objekte für die angegebenen Verträge unter Verwendung der angegebenen Metadatenadresse und MetadataExchangeClient auf.

Resolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode)

Löst eine Metadatenadresse in die ServiceEndpoint-Objekte für die angegebenen Verträge unter Verwendung der angegebenen Adresse und des Übertragungsmodus auf.

Resolve(Type, Uri, MetadataExchangeClientMode)

Löst eine Metadatenadresse in die ServiceEndpoint-Objekte für den angegebenen Vertrag unter Verwendung der angegebenen Adresse und des Übertragungsmodus auf.

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

Löst eine Metadatenadresse in die ServiceEndpoint-Objekte für die angegebenen Verträge unter Verwendung der angegebenen Adresse, des Übertragungsmodus und des Übertragungsclients auf.

Hinweise

Um Metadaten herunterladen, ohne die Informationen in ServiceEndpoint-Objekte aufzulösen, verwenden Sie System.ServiceModel.Description.MetadataExchangeClient direkt.

Für alle synchronen und asynchronen Resolve-Methoden wird eine leere Auflistung zurückgegeben, wenn keine Endpunkte importiert wurden oder wenn keine Endpunkte mit dem Vertrag übereinstimmen. Wenn eine leere Auflistung zurückgegeben wird, wird eine Warnablaufverfolgung geschrieben.

Resolve(IEnumerable<ContractDescription>, EndpointAddress)

Löst eine Metadatenadresse in die ServiceEndpoint-Objekte für den angegebenen Vertrag unter Verwendung der angegebenen Metadatenadresse auf.

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

Parameter

contracts
IEnumerable<ContractDescription>

Die Verträge, für die Metadaten heruntergeladen und aufgelöst werden sollen.

address
EndpointAddress

Die Adresse der Metadaten.

Gibt zurück

ServiceEndpointCollection

Eine Auflistung von ServiceEndpoint-Objekten für den angegebenen Vertrag.

Ausnahmen

Die Adresse oder die Vertragsauflistung ist null.

contracts ist leer, mindestens ein Member von contracts ist null, oder contracts enthält mehr als einen Vertrag mit dem gleichen Namen und Namespace.

Hinweise

Die Standardeinstellungen auf dem System.ServiceModel.Description.MetadataExchangeClient werden verwendet, um die Metadaten abzurufen. Die Standardeinstellung für System.ServiceModel.Description.MetadataExchangeClientMode ist MetadataExchangeClientMode.MetadataExchange.

Um Metadaten herunterladen, ohne die Informationen in ServiceEndpoint-Objekte aufzulösen, verwenden Sie System.ServiceModel.Description.MetadataExchangeClient direkt.

Hinweis

Es wird eine leere Auflistung zurückgegeben, wenn keine Endpunkte importiert wurden oder wenn keine Endpunkte mit dem Vertrag übereinstimmen. Wenn eine leere Auflistung zurückgegeben wird, wird eine Warnablaufverfolgung geschrieben.

Gilt für

Resolve(Type, EndpointAddress)

Lädt eine Metadatenadresse herunter und löst diese in eine Auflistung von ServiceEndpoint-Objekten für einen angegebenen Vertrag an einer spezifischen Adresse auf.

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

Parameter

contract
Type

Die Verträge, für die Metadaten heruntergeladen und aufgelöst werden sollen.

address
EndpointAddress

Die Adresse der Metadaten.

Gibt zurück

ServiceEndpointCollection

Eine Auflistung von ServiceEndpoint-Objekten für den angegebenen Vertrag.

Ausnahmen

Die Adresse oder der Vertrag ist null.

Beispiele

Das folgende Codebeispiel veranschaulicht die Verwendung der MetadataResolver-Klasse, um Metadaten als eine Auflistung von ServiceEndpoint-Objekten zurückzugeben, die dann zum Herstellen einer Verbindung mit einer Dienstinstanz verwendet werden.

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

Hinweise

Verwenden Sie die Resolve-Methode, um den Vertrag und die Metadatenadresse anzugeben, die beim Herunterladen und Auflösen von Metadaten verwendet werden sollen.

Die Standardeinstellungen auf dem System.ServiceModel.Description.MetadataExchangeClient werden verwendet, um die Metadaten abzurufen. Die Standardeinstellung für System.ServiceModel.Description.MetadataExchangeClientMode ist MetadataExchangeClientMode.MetadataExchange.

Um Metadaten herunterladen, ohne die Informationen in ServiceEndpoint-Objekte aufzulösen, verwenden Sie System.ServiceModel.Description.MetadataExchangeClient direkt.

Hinweis

Es wird eine leere Auflistung zurückgegeben, wenn keine Endpunkte importiert wurden oder wenn keine Endpunkte mit dem Vertrag übereinstimmen. Wenn eine leere Auflistung zurückgegeben wird, wird eine Warnablaufverfolgung geschrieben.

Diese Methode erfordert, dass Sie einen Vertragstyp angeben. Sie können den Vertrag angeben, indem Sie die Dienstschnittstelle im Clientcode deklarieren oder einen WCF-Client verwenden, der von Svcutil.exe generiert wird. Wenn sich die Schnittstelle ändert (z. B. einen neuen Vorgang hinzufügen), müssen Sie die Schnittstelle im Clientcode aktualisieren oder einen neuen WCF-Client generieren. Andernfalls wird eine Ausnahme ausgelöst. Beispiel: Sie verfügen über einen Dienst, der den Dienstvertrag ICalculator implementiert, in dem Add(), Sub(), Mult() und Div() definiert sind. Sie erstellen eine Clientanwendung und generieren WCF-Client. Anschließend fügen Sie eine Methode mit der Bezeichnung Echo() zu ICalculator hinzu. Wenn Sie dann eine Anwendung schreiben, die aufruft Resolve(Type, EndpointAddress) , ohne einen neuen WCF-Client zu generieren, erhalten Sie die folgende Ausnahme.

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

Gilt für

Resolve(IEnumerable<ContractDescription>, EndpointAddress, MetadataExchangeClient)

Löst eine Metadatenadresse in die ServiceEndpoint-Objekte für die angegebenen Verträge unter Verwendung der angegebenen Metadatenadresse und MetadataExchangeClient auf.

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

Parameter

contracts
IEnumerable<ContractDescription>

Die Verträge, für die Metadaten heruntergeladen und aufgelöst werden sollen.

address
EndpointAddress

Die Adresse der Metadaten.

client
MetadataExchangeClient

MetadataExchangeClient, der zum Abrufen der Metadaten verwendet wird.

Gibt zurück

ServiceEndpointCollection

Eine Auflistung von ServiceEndpoint-Objekten für den angegebenen Vertrag.

Ausnahmen

Die Adresse, die Vertragsauflistung oder der Client ist null.

contracts ist leer, mindestens ein Member von contracts ist null, oder contracts enthält mehr als einen Vertrag mit dem gleichen Namen und Namespace.

Hinweise

Der Standardwert von System.ServiceModel.Description.MetadataExchangeClientMode lautet MetadataExchangeClientMode.MetadataExchange.

Um Metadaten herunterladen, ohne die Informationen in ServiceEndpoint-Objekte aufzulösen, verwenden Sie System.ServiceModel.Description.MetadataExchangeClient direkt.

Hinweis

Es wird eine leere Auflistung zurückgegeben, wenn keine Endpunkte importiert wurden oder wenn keine Endpunkte mit dem Vertrag übereinstimmen. Wenn eine leere Auflistung zurückgegeben wird, wird eine Warnablaufverfolgung geschrieben.

Gilt für

Resolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode)

Löst eine Metadatenadresse in die ServiceEndpoint-Objekte für die angegebenen Verträge unter Verwendung der angegebenen Adresse und des Übertragungsmodus auf.

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

Parameter

contracts
IEnumerable<ContractDescription>

Die Verträge, für die Metadaten heruntergeladen und aufgelöst werden sollen.

address
Uri

Die Adresse der Metadaten.

mode
MetadataExchangeClientMode

Der Abrufmodus.

Gibt zurück

ServiceEndpointCollection

Eine Auflistung von ServiceEndpoint-Objekten für den angegebenen Vertrag.

Ausnahmen

Die Adresse oder die Vertragsauflistung ist null.

contracts ist leer, mindestens ein Member von contracts ist null, oder contracts enthält mehr als einen Vertrag mit dem gleichen Namen und Namespace.

Hinweise

Die Standardeinstellungen auf dem System.ServiceModel.Description.MetadataExchangeClient werden verwendet, um die Metadaten abzurufen.

Um Metadaten herunterladen, ohne die Informationen in ServiceEndpoint-Objekte aufzulösen, verwenden Sie System.ServiceModel.Description.MetadataExchangeClient direkt.

Hinweis

Es wird eine leere Auflistung zurückgegeben, wenn keine Endpunkte importiert wurden oder wenn keine Endpunkte mit dem Vertrag übereinstimmen. Wenn eine leere Auflistung zurückgegeben wird, wird eine Warnablaufverfolgung geschrieben.

Gilt für

Resolve(Type, Uri, MetadataExchangeClientMode)

Löst eine Metadatenadresse in die ServiceEndpoint-Objekte für den angegebenen Vertrag unter Verwendung der angegebenen Adresse und des Übertragungsmodus auf.

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

Parameter

contract
Type

Der Vertrag, für den Metadaten heruntergeladen und aufgelöst werden sollen.

address
Uri

Die Adresse der Metadaten.

mode
MetadataExchangeClientMode

Der Abrufmodus.

Gibt zurück

ServiceEndpointCollection

Eine Auflistung von ServiceEndpoint-Objekten für den angegebenen Vertrag.

Ausnahmen

Die Adresse oder der Vertrag ist null.

Beispiele

Das folgende Codebeispiel veranschaulicht die Verwendung von MetadataResolver, um Metadaten als eine Auflistung von ServiceEndpoint-Objekten mithilfe einer HTTP GET-Anforderung anstelle von WS-Transfer herunterzuladen und zurückzugeben.

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

Hinweise

Verwenden Sie die Resolve-Methode, um einen Vertrag und eine Adresse sowie den gewünschten Downloadmechanismus anzugeben.

Die Standardeinstellungen auf dem System.ServiceModel.Description.MetadataExchangeClient werden verwendet, um die Metadaten abzurufen.

Um Metadaten herunterladen, ohne die Informationen in ServiceEndpoint-Objekte aufzulösen, verwenden Sie System.ServiceModel.Description.MetadataExchangeClient direkt.

Hinweis

Es wird eine leere Auflistung zurückgegeben, wenn keine Endpunkte importiert wurden oder wenn keine Endpunkte mit dem Vertrag übereinstimmen. Wenn eine leere Auflistung zurückgegeben wird, wird eine Warnablaufverfolgung geschrieben.

Gilt für

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

Löst eine Metadatenadresse in die ServiceEndpoint-Objekte für die angegebenen Verträge unter Verwendung der angegebenen Adresse, des Übertragungsmodus und des Übertragungsclients auf.

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

Parameter

contracts
IEnumerable<ContractDescription>

Die Verträge, für die Metadaten heruntergeladen und aufgelöst werden sollen.

address
Uri

Die Adresse der Metadaten.

mode
MetadataExchangeClientMode

Der Abrufmodus.

client
MetadataExchangeClient

MetadataExchangeClient, der zum Abrufen der Metadaten verwendet wird.

Gibt zurück

ServiceEndpointCollection

Eine Auflistung von ServiceEndpoint-Objekten für den angegebenen Vertrag.

Ausnahmen

Die Adresse, die Vertragsauflistung oder der Client ist null.

contracts ist leer, mindestens ein Member von contracts ist null, oder contracts enthält mehr als einen Vertrag mit dem gleichen Namen und Namespace.

Hinweise

Um Metadaten herunterladen, ohne die Informationen in ServiceEndpoint-Objekte aufzulösen, verwenden Sie System.ServiceModel.Description.MetadataExchangeClient direkt.

Hinweis

Es wird eine leere Auflistung zurückgegeben, wenn keine Endpunkte importiert wurden oder wenn keine Endpunkte mit dem Vertrag übereinstimmen. Wenn eine leere Auflistung zurückgegeben wird, wird eine Warnablaufverfolgung geschrieben.

Gilt für