Sdílet prostřednictvím


Postupy: Import vlastního WSDL

Toto téma popisuje, jak importovat vlastní WSDL. Pokud chcete zpracovat vlastní WSDL, musíte implementovat IWsdlImportExtension rozhraní.

Import vlastního WSDL

  1. Implementovat IWsdlImportExtension. Implementujte metodu pro úpravu BeforeImport(ServiceDescriptionCollection, XmlSchemaSet, ICollection<XmlElement>) metadat před importem. Implementujte a ImportContract(WsdlImporter, WsdlContractConversionContext) metody pro úpravu ImportEndpoint(WsdlImporter, WsdlEndpointConversionContext) kontraktů a koncových bodů importovaných z metadat. Pro přístup k importovanému kontraktu nebo koncovému bodu použijte odpovídající kontextový objekt (WsdlContractConversionContext nebo 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. Nakonfigurujte klientskou aplikaci tak, aby používala vlastní nástroj pro import WSDL. Všimněte si, že pokud používáte Svcutil.exe, měli byste tuto konfiguraci přidat do konfiguračního souboru pro 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. Vytvořte novou WsdlImporter instanci (předejte MetadataSet instanci obsahující dokumenty WSDL, které chcete importovat) a volejte ImportAllContracts:

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

Viz také