HOW TO:使用 MetadataExchangeClient 來擷取中繼資料
使用 MetadataExchangeClient 類別,即可使用 WS-MetadataExchange (MEX) 通訊協定來下載中繼資料。所擷取的中繼資料檔案會當做 MetadataSet 物件傳回。傳回的 MetadataSet 物件包含 MetadataSection 物件的集合,其中每一個都會包含特定的中繼資料方言和識別項。您可以將傳回的中繼資料寫入至檔案,或者當傳回的中繼資料含有 Web 服務描述語言 (WSDL) 文件時,您便可以使用 WsdlImporter 來匯入中繼資料。
接受位址的 MetadataExchangeClient 建構函式 (Constructor),而這種建構函式會使用符合該位址之統一資源識別項 (URI) 配置之 MetadataExchangeBindings 靜態類別上的繫結。或者,您也可以使用允許明確指定要使用之繫結的 MetadataExchangeClient 建構函式。指定的繫結可用來解析所有的中繼資料參考。
跟其他的 Windows Communication Foundation (WCF) 用戶端一樣,MetadataExchangeClient 類型提供的建構函式可使用端點組態名稱來載入用戶端端點組態。指定的端點組態必須指定 IMetadataExchange 合約。在端點組態中的位址並不會載入,因此您必須使用會接收位址的其中一個 GetMetadata 多載。當您使用 EndpointAddress 執行個體指定中繼資料位址時,MetadataExchangeClient 會假設該位址指向 MEX 端點。如果指定中繼資料位址做為 URL,您就必須同時指定要使用的 MetadataExchangeClientMode 為 MEX 或 HTTP GET。
![]() |
---|
根據預設,MetadataExchangeClient 會解析您所有的參考,包括 WSDL 和 XML 結構描述 Import 和 Include。您可以透過將 ResolveMetadataReferences 屬性設定為 false,停用這項功能。您可以使用 MaximumResolvedReferences 屬性來控制要解析之參考的最大數目。您可以使用此屬性配合繫結上的 MaxReceivedMessageSize 屬性來控制要擷取的中繼資料數目。 |
使用 MetadataExchangeClient 來擷取中繼資料
透過明確指定繫結、端點組態名稱或中繼資料位址的方式,即可建立新的 MetadataExchangeClient 物件。
視您的需要設定 MetadataExchangeClient。例如,您可以指定在要求中繼資料時所要使用的認證、控制中繼資料的解析方式,以及設定 OperationTimeout 屬性來控制中繼資料要求必須在逾時前多久傳回。
取得 MetadataSet 物件,這個物件包含透過呼叫其中一個 GetMetadata 方法而擷取到的中繼資料。請注意,如果已經在建構 MetadataExchangeClient 時明確指定了位址,您就只能使用不接受任何引數的 GetMetadata 多載。
範例
下列程式碼範例會示範如何使用 MetadataExchangeClient 來下載並列舉中繼資料檔案。
編譯程式碼
若要編譯這個程式碼範例,您必須參考 System.ServiceModel.dll 組件並匯入 System.ServiceModel.Description 命名空間 (Namespace)。