Procedura: impostare la proprietà ProtectionLevel

È possibile impostare il livello di protezione applicando un attributo appropriato e impostando la proprietà. È possibile impostare la protezione a livello di servizio su tutte le parti di ogni messaggio. In alternativa è possibile impostare la protezione a livelli granulari in modo crescente, dai metodi alle parti del messaggio. Per ulteriori informazioni sulla proprietà ProtectionLevel, vedere Informazioni sul livello di protezione.

Nota

È possibile impostare i livelli di protezione solo nel codice, non nella configurazione.

Per firmare tutti i messaggi per un servizio

  1. Creare un'interfaccia per il servizio.

  2. Applicare l'attributo ServiceContractAttribute al servizio e impostare la proprietà ProtectionLevel su Sign, come illustrato nel codice seguente (il livello predefinito è EncryptAndSign).

Per firmare tutte le parti del messaggio per un'operazione

  1. Creare un'interfaccia per il servizio e applicarvi l'attributo ServiceContractAttribute.

  2. Aggiungere una dichiarazione di metodo all'interfaccia.

  3. Applicare l'attributo OperationContractAttribute al metodo e impostare la proprietà ProtectionLevel su Sign, come illustrato nel codice seguente.

Protezione dei messaggi di errore

È possibile inviare le eccezioni generate in un servizio a un client come errori SOAP. Per ulteriori informazioni sulla creazione di errori fortemente tipizzati, vedere Specifica e gestione di errori in contratti e servizi e Procedura: dichiarare errori nei contratti di servizio.

Per proteggere i messaggi di errore

  1. Creare un tipo che rappresenta il messaggio di errore. Nell'esempio seguente viene creata una classe denominata MathFault con due campi.

  2. Applicare l'attributo DataContractAttribute al tipo e un attributo DataMemberAttribute a ogni campo che deve essere serializzato, come illustrato nel codice seguente.

  3. Nell'interfaccia che restituirà l'errore, applicare l'attributo FaultContractAttribute al metodo che restituirà l'errore e impostare il parametro detailType sul tipo della classe di errore.

  4. Nel costruttore, inoltre, impostare la proprietà ProtectionLevel su EncryptAndSign, come illustrato nel codice seguente.

Protezione delle parti del messaggio

Utilizzare un contratto di messaggio per proteggere le parti di un messaggio. Per ulteriori informazioni sui contratti di messaggio, vedere Utilizzo dei contratti di messaggio.

Per proteggere il corpo del messaggio

  1. Creare un tipo che rappresenta il messaggio. Nell'esempio seguente viene creata una classe Company con due campi, CompanyName e CompanyID.

  2. Applicare l'attributo MessageContractAttribute alla classe e impostare la proprietà ProtectionLevel su EncryptAndSign.

  3. Applicare l'attributo MessageHeaderAttribute a un campo che verrà espresso come intestazione del messaggio e impostare la proprietà ProtectionLevel su EncryptAndSign.

  4. Applicare MessageBodyMemberAttribute a qualsiasi campo che verrà espresso come parte del corpo del messaggio e impostare la proprietà ProtectionLevel su EncryptAndSign, come illustrato nell'esempio seguente.

Esempio

Nell'esempio seguente viene impostata la proprietà ProtectionLevel di diverse classi Attribute in varie posizioni di un servizio.

Compilazione del codice

Nel codice seguente vengono illustrati gli spazi dei nomi necessari per compilare il codice di esempio.

Vedere anche

Riferimenti

ServiceContractAttribute
OperationContractAttribute
FaultContractAttribute
MessageContractAttribute
MessageBodyMemberAttribute

Concetti

Informazioni sul livello di protezione