Vorgehensweise: Die Verwendung von MetadataExchangeClient zum Abrufen von MetadatenHow to: Use MetadataExchangeClient to Retrieve Metadata

Verwenden Sie die MetadataExchangeClient-Klasse, um Metadaten mit dem WS-MetadataExchange (MEX)-Protokoll herunterzuladen.Use the MetadataExchangeClient class to download metadata using the WS-MetadataExchange (MEX) protocol. Die abgerufenen Metadatendateien werden als MetadataSet-Objekt zurückgegeben.The retrieved metadata files are returned as a MetadataSet object. Das zurückgegebene MetadataSet-Objekt enthält eine Auflistung der MetadataSection-Objekte, von denen jedes einen bestimmten Metadatendialekt sowie eine ID enthält.The returned MetadataSet object contains a collection of MetadataSection objects, each of which contains a specific metadata dialect and an identifier. Sie können die zurückgegebenen Metadaten in Dateien schreiben. Wenn die zurückgegebenen Metadaten WSDL (Web Services Description Language)-Dokumente enthalten, können Sie die Metadaten mit WsdlImporter importieren.You can write the returned metadata to files or, if the returned metadata contains Web Services Description Language (WSDL) documents, you can import the metadata using the WsdlImporter.

Die MetadataExchangeClient-Konstruktoren, die eine Adresse enthalten, verwenden die Bindung der statischen MetadataExchangeBindings-Klasse, die dem URL-(Uniform Resource Identifier-)Schema der Adresse entspricht.The MetadataExchangeClient constructors that take an address use the binding on the MetadataExchangeBindings static class that matches the Uniform Resource Identifier (URI) scheme of the address. Sie können als Alternative auch den MetadataExchangeClient-Konstruktor verwenden, mit dem Sie die zu verwendende Bindung ausdrücklich angeben können.You can alternatively use the MetadataExchangeClient constructor that allows you to explicitly specify the binding to use. Die angegebene Bindung wird zum Auflösen aller Metadatenverweise verwendet.The specified binding is used to resolve all metadata references.

Wie bei jedem anderen Windows Communication Foundation (WCF)Windows Communication Foundation (WCF)-Client stellt der MetadataExchangeClient-Typ einen Konstruktor zum Laden der Clientendpunkt-Konfigurationen mithilfe des Endpunktkonfigurationsnamens bereit.Just like any other Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) client, the MetadataExchangeClient type provides a constructor for loading client endpoint configurations using the endpoint configuration name. Die angegebene Endpunktkonfiguration muss den IMetadataExchange-Vertrag angeben.The specified endpoint configuration must specify the IMetadataExchange contract. Die Adresse der Endpunktkonfiguration ist nicht geladen. Deshalb müssen Sie eine der GetMetadata-Überladungen verwenden, die eine Adresse verwenden.The address in the endpoint configuration is not loaded, so you must use one of the GetMetadata overloads that take an address. Wenn Sie die Metadatenadresse mit einer EndpointAddress-Instanz angeben, geht MetadataExchangeClient davon aus, dass die Adresse auf einen MEX-Endpunkt verweist.When you specify the metadata address using an EndpointAddress instance, the MetadataExchangeClient assumes that the address points to a MEX endpoint. Wenn Sie die Metadatenadresse als URL angeben, müssen Sie auch angeben, welcher MetadataExchangeClientMode verwendet werden soll, MEX oder HTTP GET.If you specify the metadata address as a URL, then you need to also specify which MetadataExchangeClientMode to use, MEX or HTTP GET.

Wichtig

Standardmäßig löst MetadataExchangeClient alle Verweise auf, einschließlich WSDL- und XML-Schemaimporte und -Includes.By default, the MetadataExchangeClient resolves all references for you, including WSDL and XML Schema imports and includes. Sie können diese Funktion deaktivieren, indem Sie die Eigenschaft ResolveMetadataReferences auf false festlegen.You can disable this functionality by setting the ResolveMetadataReferences property to false. Sie können die maximale Anzahl von aufzulösenden Verweisen mithilfe der MaximumResolvedReferences-Eigenschaft steuern.You can control the maximum number of references to resolve using the MaximumResolvedReferences property. Sie können diese Eigenschaft zusammen mit der MaxReceivedMessageSize-Eigenschaft für die Bindung verwenden, um zu steuern, wie viele Metadaten abgerufen werden.You can use this property in conjunction with the MaxReceivedMessageSize property on the binding to control how much metadata is retrieved.

So verwenden Sie MetadataExchangeClient zum Abrufen von MetadatenTo use MetadataExchangeClient to obtain metadata

  1. Erstellen Sie ein neues MetadataExchangeClient-Objekt, indem Sie ausdrücklich eine Bindung, einen Endpunktkonfigurationsnamen oder die Adresse der Metadaten angeben.Create a new MetadataExchangeClient object by explicitly specifying a binding, an endpoint configuration name, or the address of the metadata.

  2. Konfigurieren Sie MetadataExchangeClient, um ihn an Ihre Anforderungen anzupassen.Configure the MetadataExchangeClient to suit your needs. So können Sie z. B. Anmeldeinformationen angeben, die verwendet werden, wenn Metadaten angefordert werden. Und Sie können die OperationTimeout-Eigenschaft festlegen, um zu steuern, wie lange die Metadatenanforderung zurückgegeben werden muss, bevor das Zeitlimit überschritten wird.For example, you can specify credentials to use when requesting metadata, control how metadata references are resolved, and set the OperationTimeout property to control how long the metadata request has to return before it times out.

  3. Rufen Sie das MetadataSet-Objekt ab, das die abgerufenen Metadaten enthält, indem Sie eine der GetMetadata-Methoden aufrufen.Obtain the MetadataSet object that contains the retrieved metadata by calling one of the GetMetadata methods. Beachten Sie, dass Sie lediglich die GetMetadata-Überladung verwenden können, die keine Argumente aufnimmt, wenn Sie beim Erstellen von MetadataExchangeClient ausdrücklich eine Adresse angegeben haben.Note that you can only use the GetMetadata overload that takes no arguments if you explicitly specified an address when constructing the MetadataExchangeClient.

BeispielExample

Im folgenden Codebeispiel wird die Verwendung von MetadataExchangeClient dargestellt, mit dem Metadatendateien heruntergeladen und aufgelistet werden.The following code example shows how to use MetadataExchangeClient to download and enumerate metadata files.

// Get metadata documents.
Console.WriteLine("URI of the metadata documents retreived:");
MetadataExchangeClient metaTransfer
  = new MetadataExchangeClient(httpGetMetaAddress.Uri, MetadataExchangeClientMode.HttpGet);
metaTransfer.ResolveMetadataReferences = true;
MetadataSet otherDocs = metaTransfer.GetMetadata();
foreach (MetadataSection doc in otherDocs.MetadataSections)
    Console.WriteLine(doc.Dialect + " : " + doc.Identifier);

Kompilieren des CodesCompiling the Code

Um dieses Codebeispiel zu kompilieren, müssen Sie die System.ServiceModel.dll-Assembly mit Verweisen versehen und den System.ServiceModel.Description-Namespace importieren.To compile this code example, you must reference the System.ServiceModel.dll assembly and import the System.ServiceModel.Description namespace.

Siehe auchSee Also

MetadataResolver
MetadataExchangeClient
WsdlImporter