Partager via


Comment : importer un fichier WSDL personnalisé

Cette rubrique décrit comment importer un fichier WSDL personnalisé. Pour gérer le fichier WSDL personnalisé, vous devez implémenter l'interface IWsdlImportExtension.

Pour importer le fichier WSDL personnalisé

  1. Implémentez IWsdlImportExtension. Implémentez la méthode BeforeImport pour modifier les métadonnées avant qu'elles ne soient importées. Implémentez les méthodes ImportEndpoint et ImportContract pour modifier les contrats et points de terminaison importés des métadonnées. Pour accéder au contrat ou point de terminaison importé, utilisez l'objet de contexte correspondant (WsdlContractConversionContext ou 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. Configurez l'application cliente pour utiliser l'importateur WSDL personnalisé. Notez que si vous utilisez Svcutil.exe, vous devez ajouter la configuration suivante au fichier de configuration de Svcutil.exe (Svcutil.exe.config) :

    <system.serviceModel>
          <client>
            <endpoint 
              address="https://localhost:8000/Fibonacci" 
              binding="wsHttpBinding"
              contract="IFibonacci"
            />
            <metadata>
              <wsdlImporters>
                <extension type="Microsoft.WCF.Documentation.WsdlDocumentationImporter, WsdlDocumentation" />
              </wsdlImporters>
            </metadata>
          </client>
        </system.serviceModel>
    
  3. Créez une instance WsdlImporter (en passant l'instance MetadataSet qui contient les documents WSDL à importer), puis appelez ImportAllContracts :

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

Voir aussi

Concepts

Métadonnées
Exportation et importation de métadonnées

Autres ressources

Custom WSDL Publication