Dela via


Anvisningar: Använda MetadataExchangeClient för att hämta metadata

MetadataExchangeClient Använd klassen för att ladda ned metadata med hjälp av PROTOKOLLET WS-MetadataExchange (MEX). De hämtade metadatafilerna returneras som ett MetadataSet objekt. Det returnerade MetadataSet objektet innehåller en samling MetadataSection objekt som var och en innehåller en specifik metadatadialekt och en identifierare. Du kan skriva returnerade metadata till filer, eller om de returnerade metadata innehåller WSDL-dokument (Web Services Description Language) kan du importera metadata med hjälp av WsdlImporter.

Konstruktorerna MetadataExchangeClient som tar en adress använder bindningen för den MetadataExchangeBindings statiska klass som matchar URI-schemat (Uniform Resource Identifier) för adressen. Du kan också använda MetadataExchangeClient konstruktorn som gör att du uttryckligen kan ange vilken bindning som ska användas. Den angivna bindningen används för att matcha alla metadatareferenser.

Precis som alla andra WCF-klienter MetadataExchangeClient (Windows Communication Foundation) tillhandahåller typen en konstruktor för att läsa in klientslutpunktskonfigurationer med hjälp av slutpunktskonfigurationsnamnet. Den angivna slutpunktskonfigurationen måste ange IMetadataExchange kontraktet. Adressen i slutpunktskonfigurationen läses inte in, så du måste använda en av de GetMetadata överlagringar som tar en adress. När du anger metadataadressen med en EndpointAddress instans MetadataExchangeClient förutsätter vi att adressen pekar på en MEX-slutpunkt. Om du anger metadataadressen som en URL måste du även ange vilken som MetadataExchangeClientMode ska användas, MEX eller HTTP GET.

Viktigt!

Som standard MetadataExchangeClient matchar alla referenser åt dig, inklusive importer av WSDL- och XML-schema och inkluderar. Du kan inaktivera den här funktionen genom att ange ResolveMetadataReferences egenskapen till false. Du kan styra det maximala antalet referenser som ska matchas med hjälp av MaximumResolvedReferences egenskapen . Du kan använda den här egenskapen tillsammans med MaxReceivedMessageSize egenskapen på bindningen för att styra hur mycket metadata som hämtas.

Så här använder du MetadataExchangeClient för att hämta metadata

  1. Skapa ett nytt MetadataExchangeClient objekt genom att uttryckligen ange en bindning, ett slutpunktskonfigurationsnamn eller adressen till metadata.

  2. Konfigurera för MetadataExchangeClient att passa dina behov. Du kan till exempel ange autentiseringsuppgifter som ska användas när du begär metadata, styra hur metadatareferenser matchas och ange OperationTimeout egenskapen för att styra hur länge metadatabegäran måste returneras innan tidsgränsen uppnås.

  3. Hämta objektet MetadataSet som innehåller hämtade metadata genom att anropa någon av GetMetadata metoderna. Observera att du bara kan använda överbelastningen GetMetadata som inte tar några argument om du uttryckligen angav en adress när du skapade MetadataExchangeClient.

Exempel

Följande kodexempel visar hur du använder MetadataExchangeClient för att ladda ned och räkna upp metadatafiler.

// Get metadata documents.
Console.WriteLine("URI of the metadata documents retrieved:");
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);

Kompilera koden

Om du vill kompilera det här kodexemplet måste du referera till System.ServiceModel.dll sammansättning och importera System.ServiceModel.Description namnområdet.

Se även