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
Creare un'interfaccia per il servizio.
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
Creare un'interfaccia per il servizio e applicarvi l'attributo ServiceContractAttribute.
Aggiungere una dichiarazione di metodo all'interfaccia.
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
Creare un tipo che rappresenta il messaggio di errore. Nell'esempio seguente viene creata una classe denominata
MathFault
con due campi.Applicare l'attributo DataContractAttribute al tipo e un attributo DataMemberAttribute a ogni campo che deve essere serializzato, come illustrato nel codice seguente.
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.
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
Creare un tipo che rappresenta il messaggio. Nell'esempio seguente viene creata una classe
Company
con due campi,CompanyName
eCompanyID
.Applicare l'attributo MessageContractAttribute alla classe e impostare la proprietà ProtectionLevel su EncryptAndSign.
Applicare l'attributo MessageHeaderAttribute a un campo che verrà espresso come intestazione del messaggio e impostare la proprietà
ProtectionLevel
su EncryptAndSign.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