MetadataResolver.Resolve Methode

Definition

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

Überlädt

Name Beschreibung
Resolve(IEnumerable<ContractDescription>, EndpointAddress)

Löst eine Metadatenadresse in die ServiceEndpoint Objekte für die angegebenen Verträge mithilfe der angegebenen Metadatenadresse auf.

Resolve(Type, EndpointAddress)

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

Resolve(IEnumerable<ContractDescription>, EndpointAddress, MetadataExchangeClient)

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

Resolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode)

Löst eine Metadatenadresse in die Objekte für die ServiceEndpoint angegebenen Verträge mithilfe des angegebenen Adress- und Übertragungsmodus auf.

Resolve(Type, Uri, MetadataExchangeClientMode)

Löst eine Metadatenadresse in die ServiceEndpoint Objekte für den angegebenen Vertrag mithilfe des angegebenen Adress- und Übertragungsmodus auf.

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

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

Hinweise

Um Metadaten herunterzuladen, aber die Informationen nicht in ServiceEndpoint Objekte aufzulösen, verwenden Sie die 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 Warnungsablaufverfolgung geschrieben.

Resolve(IEnumerable<ContractDescription>, EndpointAddress)

Löst eine Metadatenadresse in die ServiceEndpoint Objekte für die angegebenen Verträge mithilfe 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 Metadatenadresse.

Gibt zurück

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

Ausnahmen

Die Adress- oder Vertragssammlung lautet null.

contracts ist leer, mindestens ein Mitglied von contracts ist NULL oder contracts enthält mehrere Verträge mit demselben Namen und Namespace.

Hinweise

Die Standardeinstellungen für das System.ServiceModel.Description.MetadataExchangeClient Abrufen der Metadaten werden verwendet, und der Standardwert System.ServiceModel.Description.MetadataExchangeClientMode ist MetadataExchangeClientMode.MetadataExchange.

Um Metadaten herunterzuladen, aber die Informationen nicht in ServiceEndpoint Objekte aufzulösen, verwenden Sie die System.ServiceModel.Description.MetadataExchangeClient direkt.

Note

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

Gilt für:

Resolve(Type, EndpointAddress)

Lädt eine Metadatenadresse in eine Auflistung von ServiceEndpoint Objekten für einen bestimmten Vertrag an einer angegebenen Adresse herunter und löst sie 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 Metadatenadresse.

Gibt zurück

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

Ausnahmen

Die Adresse oder der Vertrag lautet null.

Beispiele

Das folgende Codebeispiel zeigt die Verwendung der MetadataResolver Klasse, um Metadaten als 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 soll.

Die Standardeinstellungen für das System.ServiceModel.Description.MetadataExchangeClient Abrufen der Metadaten werden verwendet, und der Standardwert System.ServiceModel.Description.MetadataExchangeClientMode ist MetadataExchangeClientMode.MetadataExchange.

Um Metadaten herunterzuladen, aber die Informationen nicht in ServiceEndpoint Objekte aufzulösen, verwenden Sie die System.ServiceModel.Description.MetadataExchangeClient direkt.

Note

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

Für diese Methode müssen 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.exegeneriert 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. Wenn Sie dies nicht tun, wird eine Ausnahme ausgelöst. Beispielsweise verfügen Sie über einen Dienst, der einen Dienstvertrag namens "ICalculator" implementiert, der Add(), Sub(), Mult() und Div() definiert. Sie erstellen eine Clientanwendung und generieren WCF-Client. Anschließend fügen Sie eine Methode zu ICalculator namens Echo() 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 mithilfe der angegebenen Metadatenadresse und 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

Parameter

contracts
IEnumerable<ContractDescription>

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

address
EndpointAddress

Die Metadatenadresse.

client
MetadataExchangeClient

Wird MetadataExchangeClient verwendet, um die Metadaten abzurufen.

Gibt zurück

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

Ausnahmen

Die Adresse, die Vertragssammlung oder der Kunde ist null.

contracts ist leer, mindestens ein Mitglied von contracts ist NULL oder contracts enthält mehrere Verträge mit demselben Namen und Namespace.

Hinweise

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

Um Metadaten herunterzuladen, aber die Informationen nicht in ServiceEndpoint Objekte aufzulösen, verwenden Sie die System.ServiceModel.Description.MetadataExchangeClient direkt.

Note

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

Gilt für:

Resolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode)

Löst eine Metadatenadresse in die Objekte für die ServiceEndpoint angegebenen Verträge mithilfe des angegebenen Adress- und Ü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 Metadatenadresse.

mode
MetadataExchangeClientMode

Der Modus des Abrufs.

Gibt zurück

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

Ausnahmen

Die Adress- oder Vertragssammlung lautet null.

contracts ist leer, mindestens ein Mitglied von contracts ist NULL oder contracts enthält mehrere Verträge mit demselben Namen und Namespace.

Hinweise

Die Standardeinstellungen für das System.ServiceModel.Description.MetadataExchangeClient Abrufen der Metadaten werden verwendet.

Um Metadaten herunterzuladen, aber die Informationen nicht in ServiceEndpoint Objekte aufzulösen, verwenden Sie die System.ServiceModel.Description.MetadataExchangeClient direkt.

Note

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

Gilt für:

Resolve(Type, Uri, MetadataExchangeClientMode)

Löst eine Metadatenadresse in die ServiceEndpoint Objekte für den angegebenen Vertrag mithilfe des angegebenen Adress- und Ü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 Metadatenadresse.

mode
MetadataExchangeClientMode

Der Modus des Abrufs.

Gibt zurück

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

Ausnahmen

Die Adresse oder der Vertrag lautet null.

Beispiele

Das folgende Codebeispiel zeigt die Verwendung der MetadataResolver Zum Herunterladen und Zurückgeben von Metadaten als Sammlung von ServiceEndpoint Objekten mithilfe einer HTTP GET-Anforderung anstelle von WS-Transfer.

// 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 zu verwendenden Downloadmechanismus anzugeben.

Die Standardeinstellungen für das System.ServiceModel.Description.MetadataExchangeClient Abrufen der Metadaten werden verwendet.

Um Metadaten herunterzuladen, aber die Informationen nicht in ServiceEndpoint Objekte aufzulösen, verwenden Sie die System.ServiceModel.Description.MetadataExchangeClient direkt.

Note

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

Gilt für:

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

Löst eine Metadatenadresse in die ServiceEndpoint Objekte für die angegebenen Verträge mithilfe 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 Metadatenadresse.

mode
MetadataExchangeClientMode

Der Modus des Abrufs.

client
MetadataExchangeClient

Wird MetadataExchangeClient verwendet, um die Metadaten abzurufen.

Gibt zurück

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

Ausnahmen

Die Adresse, die Vertragssammlung oder der Kunde ist null.

contracts ist leer, mindestens ein Mitglied von contracts ist NULL oder contracts enthält mehrere Verträge mit demselben Namen und Namespace.

Hinweise

Um Metadaten herunterzuladen, aber die Informationen nicht in ServiceEndpoint Objekte aufzulösen, verwenden Sie die System.ServiceModel.Description.MetadataExchangeClient direkt.

Note

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

Gilt für: