Procedura: importare asserzioni di criteri personalizzati
Le asserzioni di criteri descrivono le funzionalità e i requisiti di un endpoint del servizio. Le applicazioni client possono utilizzare asserzioni di criteri nei metadati del servizio per configurare l'associazione del client o per personalizzare il contratto di servizio per un endpoint del servizio.
Le asserzioni di criteri personalizzate vengono importate implementando l'interfaccia System.ServiceModel.Description.IPolicyImportExtension e passando quell'oggetto al sistema di metadati o registrando il tipo di implementazione nel file di configurazione dell'applicazione. Le implementazioni dell'interfaccia IPolicyImportExtension devono fornire un costruttore predefinito.
Per importare asserzioni di criteri personalizzati
Implementare l'interfaccia System.ServiceModel.Description.IPolicyImportExtension in una classe. Vedere le procedure seguenti.
Inserire l'unità di importazione dei criteri personalizzati tramite uno dei modi seguenti:
Utilizzando un file di configurazione. Vedere le procedure seguenti.
Utilizzando un file di configurazione con ServiceModel Metadata Utility Tool (Svcutil.exe). Vedere le procedure seguenti.
Inserendo a livello di programmazione l'unità di importazione dei criteri. Vedere le procedure seguenti.
Per implementare l'interfaccia System.ServiceModel.Description.IPolicyImportExtension in qualsiasi classe
Nel metodo System.ServiceModel.Description.IPolicyImportExtension.ImportPolicy(System.ServiceModel.Description.MetadataImporter,System.ServiceModel.Description.PolicyConversionContext), per ogni oggetto criterio a cui si è interessati, individuare le asserzioni dei criteri che si desidera importare chiamando il metodo appropriato (in base all'ambito dell'asserzione desiderata) nell'oggetto System.ServiceModel.Description.PolicyConversionContext passato al metodo. Nell'esempio di codice seguente viene illustrato come utilizzare il metodo System.ServiceModel.Description.PolicyAssertionCollection.Remove(System.String,System.String) per individuare l'asserzione del criterio personalizzato e rimuoverla dall'insieme in un passaggio. Se si utilizza il metodo di rimozione per individuare e rimuovere l'asserzione, non è necessario eseguire il passaggio 4.
Elaborare le asserzioni dei criteri. Si noti che il sistema del criterio non normalizza i criteri nidificati e wsp:optional. È necessario elaborare questi costrutti nell'implementazione di un'estensione di importazione del criterio.
Eseguire la personalizzazione dell'associazione o del contratto che supporta la funzionalità o il requisito specificato dall'asserzione del criterio. In genere, le asserzioni indicano che un'associazione richiede una particolare configurazione o uno specifico elemento di associazione. Apportare queste modifiche accedendo alla proprietà System.ServiceModel.Description.PolicyConversionContext.BindingElements. Le altre asserzioni richiedono che si modifichi il contratto. È possibile accedere e modificare il contratto utilizzando la proprietà System.ServiceModel.Description.PolicyConversionContext.Contract. Si noti che l'unità di importazione dei criteri può venire chiamata più volte per la stessa associazione e per lo stesso contratto, ma per alternative criteri diverse se l'importazione di un'alternativa criterio non riesce. Il codice deve adattarsi a questo comportamento.
Rimuovere l'asserzione di criteri personalizzata dall'insieme di asserzioni. Se l'asserzione non viene rimossa, Windows Communication Foundation (WCF) presuppone che l'importazione del criterio non sia stata completata correttamente e non importa l'associazione associata. Se è stato utilizzato il metodo System.ServiceModel.Description.PolicyAssertionCollection.Remove(System.String,System.String) per individuare l'asserzione di criteri personalizzata e rimuoverla dall'insieme in un unico passaggio, non è necessario eseguire questa procedura.
Per inserire l'unità di importazione di criteri personalizzata nel sistema di metadati utilizzando un file di configurazione
Aggiungere il tipo di unità di importazione all'elemento <extensions> nell'elemento <policyImporters> nel file di configurazione client.
Nell'applicazione client, utilizzare System.ServiceModel.Description.MetadataResolver o System.ServiceModel.Description.WsdlImporter per risolvere i metadati. L'unità di importazione viene richiamata automaticamente.
Per inserire l'unità di importazione di criteri personalizzata nel sistema di metadati utilizzando Svcutil.exe
Aggiungere il tipo di unità di importazione all'elemento <extensions> nell'elemento <policyImporters> nel file di configurazione Svcutil.exe.config. È anche possibile puntare a Svcutil.exe per caricare tipi di unità di importazione di criteri registrati in un file di configurazione diverso, utilizzando l'opzione /svcutilConfig.
Utilizzare ServiceModel Metadata Utility Tool (Svcutil.exe) per importare i metadati. L'unità di importazione viene richiamata automaticamente.
Per inserire l'unità di importazione di criteri personalizzata nel sistema di metadati a livello di programmazione
- Aggiungere l'unità di importazione alla proprietà System.ServiceModel.Description.MetadataImporter.PolicyImportExtensions (ad esempio, se si sta utilizzando System.ServiceModel.Description.WsdlImporter) prima di importare i metadati.
Vedere anche
Riferimenti
System.ServiceModel.Description.MetadataResolver
System.ServiceModel.Description.WsdlImporter
System.ServiceModel.Description.MetadataResolver