Vorgehensweise: Importieren von benutzerdefinierter WSDLHow to: Import Custom WSDL

In diesem Thema wird beschrieben, wie Sie benutzerdefinierte WSDL importieren.This topic describes how to import custom WSDL. Zum Behandeln der benutzerdefinierten WSDL müssen Sie die IWsdlImportExtension-Schnittstelle implementieren.To handle the custom WSDL, you must implement the IWsdlImportExtension interface.

So importieren Sie benutzerdefinierte WSDLTo import custom WSDL

  1. Implementieren Sie IWsdlImportExtension.Implement IWsdlImportExtension. Implementieren Sie die BeforeImport(ServiceDescriptionCollection, XmlSchemaSet, ICollection<XmlElement>)-Methode, um die Metadaten vor dem Import zu ändern.Implement the BeforeImport(ServiceDescriptionCollection, XmlSchemaSet, ICollection<XmlElement>) method to modify the metadata before it is imported. Implementieren Sie die ImportEndpoint(WsdlImporter, WsdlEndpointConversionContext)-Methode und die ImportContract(WsdlImporter, WsdlContractConversionContext)-Methode, um aus den Metadaten importierte Verträge und Endpunkte zu ändern.Implement the ImportEndpoint(WsdlImporter, WsdlEndpointConversionContext) and ImportContract(WsdlImporter, WsdlContractConversionContext) methods to modify contracts and endpoints imported from the metadata. Verwenden Sie zum Zugriff auf den importierten Vertrag oder Endpunkt das entsprechende Kontextobjekt (WsdlContractConversionContext oder WsdlEndpointConversionContext):To access the imported contract or endpoint, use the corresponding context object (WsdlContractConversionContext or WsdlEndpointConversionContext):

    public class WsdlDocumentationImporter : IWsdlImportExtension  
       {  
          public void ImportContract(WsdlImporter importer, WsdlContractConversionContext context)  
    {  
            // Contract documentation  
         if (context.WsdlPortType.Documentation != null)  
         {  
               context.Contract.Behaviors.Add(new WsdlDocumentationImporter(context.WsdlPortType.Documentation));  
    }  
    // Operation documentation  
    foreach (Operation operation in context.WsdlPortType.Operations)  
    {  
    if (operation.Documentation != null)  
    {  
    OperationDescription operationDescription = context.Contract.Operations.Find(operation.Name);  
    if (operationDescription != null)  
    {  
                            operationDescription.Behaviors.Add(new WsdlDocumentationImporter(operation.Documentation));  
    }  
    }  
    }  
    }  
    
    public void BeforeImport(ServiceDescriptionCollection wsdlDocuments, XmlSchemaSet xmlSchemas, ICollection<XmlElement> policy)   
            {  
                Console.WriteLine("BeforeImport called.");  
            }  
    
    public void ImportEndpoint(WsdlImporter importer, WsdlEndpointConversionContext context)   
            {  
                Console.WriteLine("ImportEndpoint called.");  
            }  
       }  
    
  2. Konfigurieren Sie die Clientanwendung für die Verwendung des benutzerdefinierten WSDL-Importers.Configure the client application to use the custom WSDL importer. Wenn Sie Svcutil.exe verwenden, sollten Sie diese Konfiguration der Konfigurationsdatei für Svcutil.exe (Svcutil.exe.config) hinzufügen:Note that if you are using Svcutil.exe, you should add this configuration to the configuration file for Svcutil.exe (Svcutil.exe.config):

    <system.serviceModel>  
          <client>  
            <endpoint   
              address="http://localhost:8000/Fibonacci"   
              binding="wsHttpBinding"  
              contract="IFibonacci"  
            />  
            <metadata>  
              <wsdlImporters>  
                <extension type="Microsoft.WCF.Documentation.WsdlDocumentationImporter, WsdlDocumentation" />  
              </wsdlImporters>  
            </metadata>  
          </client>  
        </system.serviceModel>  
    
  3. Erstellen Sie eine neue WsdlImporter-Instanz (die dabei MetadataSet-Instanz übergibt, die die zu importierenden WSDL-Dokumente enthält), und rufen Sie ImportAllContracts auf:Create a new WsdlImporter instance (passing in the MetadataSet instance that contains the WSDL documents that you want to import), and call ImportAllContracts:

    WsdlImporter importer = new WsdlImporter(metaDocs);          System.Collections.ObjectModel.Collection<ContractDescription> contracts  = importer.ImportAllContracts();  
    

Siehe auchSee Also

MetadatenMetadata
Exportieren und Importieren von MetadatenExporting and Importing Metadata
Benutzerdefinierte WSDL-VeröffentlichungCustom WSDL Publication