Compartir a través de


Cómo importar WSDL personalizado

En este tema se describe cómo importar WSDL personalizado. Para administrar el WSDL personalizado, debe implementar la interfaz IWsdlImportExtension.

Para importar el WSDL personalizado

  1. Implemente IWsdlImportExtension. Implemente el método BeforeImport para modificar los metadatos antes de que se importen. Implemente los métodos ImportEndpoint y ImportContract para modificar contratos y extremos importados de los metadatos. Para tener acceso al contrato o extremo importados, utilice el objeto de contexto (WsdlContractConversionContext correspondiente o 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. Configure la aplicación de cliente para utilizar el importador de WSDL personalizado. Tenga en cuenta que si está utilizando Svcutil.exe, debería agregar esta configuración al archivo de configuración para 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. Cree una nueva instancia WsdlImporter (pasar la instancia MetadataSet que contiene los documentos WSDL que desea importar) y llame a ImportAllContracts:

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

Vea también

Tareas

Publicación de WSDL personalizada

Conceptos

Metadatos
Exportación e importación de metadatos