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

  1. Implementare l'interfaccia System.ServiceModel.Description.IPolicyImportExtension in una classe. Vedere le procedure seguenti.

  2. Inserire l'unità di importazione dei criteri personalizzati tramite uno dei modi seguenti:

  3. Utilizzando un file di configurazione. Vedere le procedure seguenti.

  4. Utilizzando un file di configurazione con ServiceModel Metadata Utility Tool (Svcutil.exe). Vedere le procedure seguenti.

  5. 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

  1. 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.

  2. 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.

  3. 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.

  4. 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

  1. Aggiungere il tipo di unità di importazione all'elemento <extensions> nell'elemento <policyImporters> nel file di configurazione client.

  2. 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

  1. 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.

  2. 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

  1. 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

Altre risorse

Estensione del sistema di metadati