MetadataResolver.Resolve Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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
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
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
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.
Der Abrufmodus.
Gibt zurück
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.
Der Abrufmodus.
Gibt zurück
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.
Der Abrufmodus.
- client
- MetadataExchangeClient
MetadataExchangeClient, der zum Abrufen der Metadaten verwendet wird.
Gibt zurück
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.