Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I Windows Communication Foundation (WCF) är metadataimport processen för att generera en abstrakt representation av en tjänst eller dess komponentdelar från dess metadata. WCF kan till exempel importera ServiceEndpoint instanser, Binding instanser eller ContractDescription instanser från ett WSDL-dokument för en tjänst. Om du vill importera tjänstmetadata i WCF använder du en implementering av den System.ServiceModel.Description.MetadataImporter abstrakta klassen. Typer som härleds från MetadataImporter klassen implementerar stöd för import av metadataformat som utnyttjar WS-Policy importlogik i WCF.
Anpassade metadata består av XML-element som de systembaserade metadataimportörerna inte kan importera. Detta omfattar vanligtvis anpassade WSDL-tillägg och anpassade policyframställningar.
I det här avsnittet beskrivs hur du importerar anpassade WSDL-tillägg och policypåståenden. Den fokuserar inte på själva importprocessen. Mer information om hur du använder de typer som exporterar och importerar metadata oavsett om metadata är anpassade eller systemstödda finns i Exportera och importera metadata.
Översikt
Typen System.ServiceModel.Description.WsdlImporter är implementeringen av den MetadataImporter abstrakta klass som ingår i WCF. Typen WsdlImporter importerar WSDL-metadata med anslutna principer som paketeras i ett System.ServiceModel.Description.MetadataSet objekt. Principuttryck och WSDL-tillägg som standardimportörerna inte känner igen skickas till alla registrerade anpassade princip- och WSDL-importörer för import. Vanligtvis implementeras importörer för att stödja användardefinierade bindningselement eller för att ändra det importerade kontraktet.
I det här avsnittet beskrivs:
Hur du implementerar och använder System.ServiceModel.Description.IWsdlImportExtension gränssnittet, som exponerar WSDL-data för anpassade importörer före genereringen av beskrivningar och generering av kod. Du kan använda det här gränssnittet för att undersöka eller ändra de beskrivningstyper och kodkompilering som utförs med hjälp av en viss uppsättning metadata.
Så här implementerar och använder du System.ServiceModel.Description.IPolicyImportExtension gränssnittet, som exponerar principkontroller för importörer innan beskrivningsobjekt skapas. Du kan använda det här gränssnittet för att undersöka eller ändra bindningen eller kontraktet baserat på de nedladdade principerna.
För mer information om hur du exporterar anpassade WSDL- och policyutsagor finns i Exportera anpassade metadata för ett WCF-tillägg.
Importera anpassade WSDL-tillägg
Om du vill lägga till stöd för import av WSDL-tillägg implementerar IWsdlImportExtension du gränssnittet och lägger sedan till implementeringen i WsdlImportExtensions egenskapen. WsdlImporter kan också läsa in implementeringar av IWsdlImportExtension-gränssnittet som registreras i din programkonfigurationsfil. Observera att ett antal WSDL-importörer registreras som standard och att ordningen på de registrerade WSDL-importörerna är betydande.
När den anpassade WSDL-importören läses in och används av WsdlImporter anropas först BeforeImport-metoden för att aktivera ändringar av metadata före importprocessen. Därefter importeras kontrakten ImportContract varefter metoden anropas för att aktivera ändringen av kontrakten som importeras från metadata. Slutligen anropas ImportEndpoint metoden för att aktivera ändringen av de importerade slutpunkterna.
Mer information finns i Så här: Importera anpassad WSDL.
Importera anpassade policyuttryck
Typen WsdlImporter och Verktyget för ServiceModel-metadata (Svcutil.exe) hanterar automatiskt bearbetningen av en mängd olika typer av principkontroller i principuttryck som är kopplade till WSDL-dokument. Dessa verktyg samlar in, normaliserar och sammanfogar principuttryck som är kopplade till WSDL-bindningar och WSDL-portar.
För att lägga till stöd för import av anpassade policyöverenskommelser, implementera IPolicyImportExtension-gränssnittet och lägg sedan till din implementering i PolicyImportExtensions-egenskapen. MetadataImporter kan också läsa in implementeringar av IPolicyImportExtension-gränssnittet som registreras i din programkonfigurationsfil. Observera att ett antal principimportörer registreras som standard och att ordningen på de registrerade principimportörerna är betydande.
Metadatasystemet anropar upprepade gånger IPolicyImportExtension.ImportPolicy-metoden för alla registrerade policyimporttillägg för varje kombination av policyalternativ som är kopplade till meddelande-, åtgärds- och slutpunkts policyämnena. När du importerar en WSDL-port sammanfogas principer som är kopplade till porten och till motsvarande WSDL-bindning innan de används vid anrop till principimporttilläggen. Policysalternativen görs tillgängliga via PolicyConversionContext som PolicyAssertionCollection objekt. Varje PolicyAssertionCollection är en samling av policypåståenden som representeras av XmlElement objekt.
Egenskaperna Contract och BindingElements på PolicyConversionContext objektet exponerar objekten ContractDescription och BindingElement som importerades från WSDL. Principimporttillägg bearbetar principkontroller genom att hitta instanser av en viss principkontrolltyp, göra motsvarande ändringar i objekten ContractDescription eller BindingElement och sedan ta bort principkontrollerna från motsvarande PolicyAssertionCollection instans.
Attributet wsp:Optional och kapslade principuttryck normaliseras inte, så tillägg för principimport måste hantera dessa principkonstruktioner. Dessutom kan tillägg för principimport anropas flera gånger med samma ContractDescription objekt och BindingElement objekt, så tilläggen för principimport bör vara robusta för det här beteendet.
Viktigt!
Ogiltiga eller felaktiga metadata kan skickas till importören. Se till att anpassade importörer är robusta för alla former av XML.