Instrukcje: Używanie elementu MetadataExchangeClient do pobierania metadanych
MetadataExchangeClient Użyj klasy , aby pobrać metadane przy użyciu protokołu WS-MetadataExchange (MEX). Pobrane pliki metadanych są zwracane jako MetadataSet obiekt. Zwrócony MetadataSet obiekt zawiera kolekcję MetadataSection obiektów, z których każdy zawiera określony dialekt metadanych i identyfikator. Zwrócone metadane można zapisać w plikach lub, jeśli zwrócone metadane zawierają dokumenty w języku WSDL (Web Services Description Language), możesz zaimportować metadane przy użyciu elementu WsdlImporter.
Konstruktory MetadataExchangeClient , które przyjmują adres, używają powiązania w MetadataExchangeBindings klasie statycznej zgodnej ze schematem identyfikatora URI (Uniform Resource Identifier) adresu. Możesz też użyć konstruktora MetadataExchangeClient , który umożliwia jawne określenie powiązania do użycia. Określone powiązanie służy do rozpoznawania wszystkich odwołań do metadanych.
Podobnie jak w przypadku każdego innego klienta programu Windows Communication Foundation (WCF), MetadataExchangeClient typ udostępnia konstruktor do ładowania konfiguracji punktu końcowego klienta przy użyciu nazwy konfiguracji punktu końcowego. Określona konfiguracja punktu końcowego IMetadataExchange musi określać kontrakt. Adres w konfiguracji punktu końcowego nie jest załadowany, dlatego należy użyć jednego z GetMetadata przeciążeń, które przyjmują adres. Podczas określania adresu metadanych przy użyciu EndpointAddress wystąpienia zakłada się, MetadataExchangeClient że adres wskazuje punkt końcowy MEX. Jeśli określisz adres metadanych jako adres URL, musisz również określić, które MetadataExchangeClientMode z nich mają być używane, MEX lub HTTP GET.
Ważne
Domyślnie program MetadataExchangeClient rozpoznaje wszystkie odwołania, w tym importy WSDL i schemat XML oraz zawiera. Tę funkcję można wyłączyć, ustawiając ResolveMetadataReferences właściwość na false
. Możesz kontrolować maksymalną liczbę odwołań do rozpoznawania MaximumResolvedReferences za pomocą właściwości . Tej właściwości można używać w połączeniu z właściwością MaxReceivedMessageSize
powiązania, aby kontrolować ilość pobieranych metadanych.
Aby uzyskać metadane przy użyciu klasy MetadataExchangeClient
Utwórz nowy MetadataExchangeClient obiekt, jawnie określając powiązanie, nazwę konfiguracji punktu końcowego lub adres metadanych.
Skonfiguruj element zgodnie z MetadataExchangeClient potrzebami. Można na przykład określić poświadczenia do użycia podczas żądania metadanych, kontrolować sposób rozpoznawania odwołań do metadanych i ustawić OperationTimeout właściwość, aby kontrolować, jak długo żądanie metadanych musi zostać zwrócone przed upływem limitu czasu.
MetadataSet Uzyskaj obiekt zawierający pobrane metadane, wywołując jedną z GetMetadata metod. Należy pamiętać, że można użyć GetMetadata przeciążenia, które nie przyjmuje żadnych argumentów, jeśli jawnie określono adres podczas konstruowania MetadataExchangeClient.
Przykład
Poniższy przykład kodu przedstawia sposób pobierania MetadataExchangeClient i wyliczania plików metadanych.
// 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);
Kompilowanie kodu
Aby skompilować ten przykład kodu, należy odwołać się do zestawu System.ServiceModel.dll i zaimportować System.ServiceModel.Description przestrzeń nazw.