WsdlImporter Klass

Definition

Importerar WSDL-metadata (Web Services Description Language) 1.1 med WS-Policy bifogade filer.

public ref class WsdlImporter : System::ServiceModel::Description::MetadataImporter
public class WsdlImporter : System.ServiceModel.Description.MetadataImporter
type WsdlImporter = class
    inherit MetadataImporter
Public Class WsdlImporter
Inherits MetadataImporter
Arv
WsdlImporter

Exempel

I följande kodexempel visas hur du använder WsdlImporter för att lägga till en anpassad System.Runtime.Serialization.IDataContractSurrogate, importera alla kontrakt och kompilera kontrakten och spara dem i en fil.

  static void GenerateCSCodeForService(EndpointAddress metadataAddress, string outputFile)
  {
MetadataExchangeClient mexClient = new MetadataExchangeClient(metadataAddress);
mexClient.ResolveMetadataReferences = true;
MetadataSet metaDocs = mexClient.GetMetadata();

      WsdlImporter importer = new WsdlImporter(metaDocs);
ServiceContractGenerator generator = new ServiceContractGenerator();

// Add our custom DCAnnotationSurrogate
// to write XSD annotations into the comments.
object dataContractImporter;
XsdDataContractImporter xsdDCImporter;
if (!importer.State.TryGetValue(typeof(XsdDataContractImporter), out dataContractImporter))
{
  Console.WriteLine("Couldn't find the XsdDataContractImporter! Adding custom importer.");
  xsdDCImporter = new XsdDataContractImporter();
  xsdDCImporter.Options = new ImportOptions();
  importer.State.Add(typeof(XsdDataContractImporter), xsdDCImporter);
}
else
{
  xsdDCImporter = (XsdDataContractImporter)dataContractImporter;
  if (xsdDCImporter.Options == null)
  {
    Console.WriteLine("There were no ImportOptions on the importer.");
    xsdDCImporter.Options = new ImportOptions();
  }
}
xsdDCImporter.Options.DataContractSurrogate = new DCAnnotationSurrogate();

// Uncomment the following code if you are going to do your work programmatically rather than add
// the WsdlDocumentationImporters through a configuration file.
/*
// The following code inserts a custom WsdlImporter without removing the other
// importers already in the collection.
System.Collections.Generic.IEnumerable<IWsdlImportExtension> exts = importer.WsdlImportExtensions;
System.Collections.Generic.List<IWsdlImportExtension> newExts
  = new System.Collections.Generic.List<IWsdlImportExtension>();
foreach (IWsdlImportExtension ext in exts)
{
  Console.WriteLine("Default WSDL import extensions: {0}", ext.GetType().Name);
  newExts.Add(ext);
}
newExts.Add(new WsdlDocumentationImporter());
System.Collections.Generic.IEnumerable<IPolicyImportExtension> polExts = importer.PolicyImportExtensions;
importer = new WsdlImporter(metaDocs, polExts, newExts);
*/

System.Collections.ObjectModel.Collection<ContractDescription> contracts
  = importer.ImportAllContracts();
importer.ImportAllEndpoints();
      foreach (ContractDescription contract in contracts)
      {
          generator.GenerateServiceContractType(contract);
      }
if (generator.Errors.Count != 0)
  throw new Exception("There were errors during code compilation.");

// Write the code dom
System.CodeDom.Compiler.CodeGeneratorOptions options
  = new System.CodeDom.Compiler.CodeGeneratorOptions();
      options.BracingStyle = "C";
      System.CodeDom.Compiler.CodeDomProvider codeDomProvider
  = System.CodeDom.Compiler.CodeDomProvider.CreateProvider("C#");
      System.CodeDom.Compiler.IndentedTextWriter textWriter
  = new System.CodeDom.Compiler.IndentedTextWriter(new System.IO.StreamWriter(outputFile));
      codeDomProvider.GenerateCodeFromCompileUnit(
  generator.TargetCompileUnit, textWriter, options
);
      textWriter.Close();
  }

Kommentarer

WsdlImporter Använd klassen för att importera metadata och konvertera informationen till olika klasser som representerar kontrakt- och slutpunktsinformation.

Basklassen WsdlImporter för MetadataImporter, klassen, definierar metoder som selektivt importerar kontrakt- och slutpunktsinformation och egenskaper som exponerar eventuella importfel och accepterar typinformation som är relevant för import- och konverteringsprocessen. Typen WsdlImporter använder anpassade principimportörer (IPolicyImportExtension implementeringar) från den överordnade typen för att hantera anpassade principinstruktioner och egna anpassade WSDL-importörer (IWsdlImportExtension implementeringar) för att hantera anpassade WSDL-element. Mer information finns i Utöka metadatasystemet.

När du importerar en princip från WSDL-dokument WsdlImporter provar typen upp till 32 kombinationer av principalternativ som är kopplade till de olika WSDL-principämnena. Om ingen kombination importeras utan problem används den första kombinationen för att konstruera en delvis anpassad bindning.

Utöver dessa metoder och egenskaper WsdlImporter implementerar även metoder som stöder import av bindningsinformation och egenskaper som ger åtkomst till principdokument, WSDL-dokument, WSDL-tillägg och XML-schemadokument. Information om hur du utökar WsdlImporter för att stödja anpassade WSDL-element finns i IWsdlImportExtension.

WsdlImporter Vanligtvis används klassen i en trestegsprocess.

  1. Skapa ett WsdlImporter objekt och skicka ett MetadataSet objekt till konstruktorn.

  2. Anropa lämplig Import metod för att hämta resultatet.

  3. Kontrollera egenskapen Errors för att avgöra om det finns några importfel.

Note

Om QName för porttypen matchar en post i KnownContracts ordlistan när du importerar WSDL-porttyper importeras inte porttypen och det kända kontraktet används i stället.

Inga värden returneras från WsdlImporter egenskaperna förrän någon av importmetoderna anropas. Anpassade System.ServiceModel.Description.IWsdlImportExtension objekt kan antingen läsas in i WsdlImporter programmatiskt eller med hjälp av klientkonfigurationen <wsdlImporters-elementet> .

Metadata som har importerats som tjänstslutpunkter kan inte användas för att skapa en körnings- eller exportmetadata eftersom de importerade slutpunkterna inte innehåller någon information om hanterad typ. Om du vill använda metadata för att skapa en klient- eller tjänstkörning eller för att generera metadata måste du först generera och kompilera kod från metadata och använda den typen av information för att skapa ett nytt System.ServiceModel.Description.ContractDescription objekt med hjälp av GetContract.

Konstruktorer

Name Description
WsdlImporter(MetadataSet, IEnumerable<IPolicyImportExtension>, IEnumerable<IWsdlImportExtension>, MetadataImporterQuotas)

Skapar ett WsdlImporter objekt från angivna metadata, anpassade principimportörer och anpassade WSDL-importörer.

WsdlImporter(MetadataSet, IEnumerable<IPolicyImportExtension>, IEnumerable<IWsdlImportExtension>)

Skapar ett WsdlImporter objekt från angivna metadata, anpassade principimportörer och anpassade WSDL-importörer.

WsdlImporter(MetadataSet)

Initierar en ny instans av WsdlImporter klassen.

Egenskaper

Name Description
Errors

Hämtar ett värde som anger om det uppstod fel vid import av metadata.

(Ärvd från MetadataImporter)
KnownContracts

Hämtar en ordlista med kontrakt efter namn som importören känner till.

(Ärvd från MetadataImporter)
PolicyImportExtensions

Hämtar en samling principimportörer som importören anropar för att bearbeta principkontroller.

(Ärvd från MetadataImporter)
State

Hämtar eller anger en samling objekt som används vid import av metadata.

(Ärvd från MetadataImporter)
WsdlDocuments

Hämtar en uppsättning ServiceDescription objekt som beskriver kontraktsinformationen i metadatadokumenten.

WsdlImportExtensions

Hämtar en uppsättning IWsdlImportExtension objekt som används för att importera anpassad WSDL-information.

XmlSchemas

Hämtar en uppsättning XmlSchema objekt som beskriver typer i metadata.

Metoder

Name Description
Equals(Object)

Avgör om det angivna objektet är lika med det aktuella objektet.

(Ärvd från Object)
GetHashCode()

Fungerar som standard-hash-funktion.

(Ärvd från Object)
GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
ImportAllBindings()

Returnerar en uppsättning Binding objekt som importerats från metadatadokumenten.

ImportAllContracts()

Returnerar en uppsättning ContractDescription objekt som representerar porttypsinformation i metadatadokumenten.

ImportAllEndpoints()

Returnerar en ServiceEndpointCollection som representerar slutpunkterna i WSDL-dokument.

ImportBinding(Binding)

Returnerar ett Binding objekt som representerar bindningsinformation från en uppsättning metadatadokument.

ImportContract(PortType)

Returnerar ett ContractDescription objekt som representerar metadata som finns i den angivna porttypsinformationen.

ImportEndpoint(Port)

Returnerar en ServiceEndpoint från en uppsättning metadatadokument som använder information från det angivna Port objektet.

ImportEndpoints(Binding)

Returnerar en ServiceEndpointCollection som representerar alla WSDL-porttyper med den angivna Binding.

ImportEndpoints(PortType)

Returnerar en ServiceEndpointCollection som representerar alla WSDL-porttyper som är associerade med den angivna PortType.

ImportEndpoints(Service)

Returnerar en ServiceEndpointCollection som representerar alla WSDL-porttyper inom angiven Service.

MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
ToString()

Returnerar en sträng som representerar det aktuella objektet.

(Ärvd från Object)

Gäller för