Dela via


Exportera och importera metadata

I Windows Communication Foundation (WCF) är export av metadata processen att beskriva tjänstslutpunkter och projicera dem i en parallell, standardiserad representation som klienter kan använda för att förstå hur tjänsten ska användas. Import av tjänstmetadata är processen att generera ServiceEndpoint instanser eller delar från tjänstmetadata.

Exportera metadata

Om du vill exportera metadata från System.ServiceModel.Description.ServiceEndpoint instanser använder du en implementering av den MetadataExporter abstrakta klassen. Typen WsdlExporter är implementeringen av den MetadataExporter abstrakta klass som ingår i WCF.

Typen System.ServiceModel.Description.WsdlExporter genererar WSDL-metadata (Web Services Description Language) med bifogade principuttryck inkapslade i en MetadataSet instans. Du kan använda en System.ServiceModel.Description.WsdlExporter instans för att iterativt exportera metadata för ContractDescription objekt och ServiceEndpoint objekt. Du kan också exportera en samling ServiceEndpoint objekt och associera dem med ett specifikt tjänstnamn.

Kommentar

Du kan bara använda WsdlExporter för att exportera metadata från ContractDescription instanser som innehåller clr-typinformation (common language runtime), till exempel en ContractDescription instans som skapats med hjälp ContractDescription.GetContract av metoden eller skapats som en del av ServiceDescription för en ServiceHost instans. Du kan inte använda WsdlExporter för att exportera metadata från ContractDescription instanser som importerats från tjänstmetadata eller konstruerats utan typinformation.

Importera metadata

Importera WSDL-dokument

Om du vill importera tjänstmetadata i WCF använder du en implementering av den MetadataImporter abstrakta klassen. Typen System.ServiceModel.Description.WsdlImporter är implementeringen av den MetadataImporter abstrakta klass som ingår i WCF. Typen WsdlImporter importerar WSDL-metadata med kopplade principer som paketeras i ett MetadataSet objekt.

Typen WsdlImporter ger dig kontroll över hur du importerar metadata. Du kan importera alla slutpunkter, alla bindningar eller alla kontrakt. Du kan importera alla slutpunkter som är associerade med en specifik WSDL-tjänst, bindning eller porttyp. Du kan också importera slutpunkten för en specifik WSDL-port, bindningen för en specifik WSDL-bindning eller kontraktet för en specifik WSDL-porttyp.

WsdlImporter Visar även en KnownContracts egenskap som gör att du kan ange en uppsättning kontrakt som inte behöver importeras. WsdlImporter Använder kontrakten KnownContracts i egenskapen i stället för att importera ett kontrakt med samma kvalificerade namn från metadata.

Importera principer

Typen WsdlImporter samlar in de principuttryck som är kopplade till meddelande-, åtgärds- och slutpunktsprincipämnena och använder IPolicyImportExtension sedan implementeringarna i PolicyImportExtensions samlingen för att importera principuttrycken.

Logiken för principimport hanterar automatiskt principreferenser till principuttryck i samma WSDL-dokument och identifieras med ett wsu:Id eller xml:id -attribut. Logiken för principimport skyddar program mot cirkelreferenser genom att begränsa storleken på ett principuttryck till 4 096 noder, där en nod är ett av följande element: wsp:Policy, wsp:All, wsp:ExactlyOne, . wsp:policyReference

Logiken för principimport normaliserar också automatiskt principuttryck. Kapslade principuttryck och wsp:Optional attributet normaliseras inte. Mängden normaliseringsbearbetning som utförs är begränsad till 4 096 steg, där varje steg ger en principkontroll eller ett underordnat element i ett wsp:ExactlyOne element.

Typen WsdlImporter försöker med upp till 32 kombinationer av principalternativ som är kopplade till de olika WSDL-principämnena. Om ingen kombination importeras rent används den första kombinationen för att konstruera en partiell anpassad bindning.

Felhantering

Både typerna MetadataExporter och MetadataImporter exponerar en Errors egenskap som kan innehålla en samling fel- och varningsmeddelanden som påträffas under export- respektive importprocesserna som kan användas vid implementering av verktyg.

Typen WsdlImporter genererar vanligtvis ett undantag för ett undantag som fångas under importprocessen och lägger till ett motsvarande fel i dess Errors egenskap. Metoderna ImportAllContracts, ImportAllBindings, ImportAllEndpoints, och ImportEndpoints utlöser dock inte dessa undantag, så du måste kontrollera Errors egenskapen för att avgöra om några problem uppstod när du anropade dessa metoder.

Typen WsdlExporter återväxar eventuella undantag som fångas under exportprocessen. Dessa undantag registreras inte som fel i egenskapen Errors . När undantaget WsdlExporter har genererats är det i ett felaktigt tillstånd och kan inte återanvändas. WsdlExporter Lägger till varningar i dess Errors egenskap när en åtgärd inte kan exporteras eftersom den använder jokerteckenåtgärder och när dubblettbindningsnamn påträffas.

I det här avsnittet

Anvisningar: Importera metadata till tjänstslutpunkter
Beskriver hur du importerar nedladdade metadata till beskrivningsobjekt.

Anvisningar: Exportera metadata från tjänstslutpunkter
Beskriver hur du exporterar beskrivningsobjekt till metadata.

ServiceDescription- och WSDL-referens
Beskriver mappningen mellan beskrivningsobjekten och WSDL.

Anvisningar: Använd Svcutil.exe för att exportera metadata från kompilerad tjänstkod
Beskriver användningen av Svcutil.exe för att exportera metadata för tjänster, kontrakt och datatyper i kompilerade sammansättningar.

Schemareferens för datakontrakt
Beskriver delmängden av DET XML-schema (XSD) som används av DataContractSerializer för att beskriva CLR-typer (common language run-time) för XML-serialisering.

Referens

WsdlExporter

WsdlImporter

Se även