Partager via


Comment : définir la propriété ProtectionLevel

Vous pouvez définir le niveau de protection en appliquant un attribut approprié et en définissant la propriété. Vous pouvez définir la protection au niveau du service afin d'affecter toutes les parties de chaque message, ou vous pouvez la définir à des niveaux de plus en plus spécifiques, des méthodes aux parties du message. Pour plus d'informations sur la propriété ProtectionLevel, consultez Fonctionnement des niveaux de protection.

Aa347791.note(fr-fr,VS.90).gifRemarque :
Vous pouvez définir des niveaux de protection dans le code uniquement, mais pas dans la configuration.

Pour signer tous les messages d'un service

  1. Créez une interface pour le service.

  2. Appliquez l'attribut ServiceContractAttribute au service et affectez Sign à la propriété ProtectionLevel, tel qu'indiqué dans le code suivant (le niveau par défaut est EncryptAndSign).

Pour signer toutes les parties de message d'une opération

  1. Créez une interface pour le service et appliquez l'attribut ServiceContractAttribute à celle-ci.

  2. Ajoutez une déclaration de méthode à l'interface.

  3. Appliquez l'attribut OperationContractAttribute à la méthode et affectez Sign à la propriété ProtectionLevel, tel qu'indiqué dans le code suivant.

Protection des messages d'erreur

Les exceptions levées sur un service peuvent être envoyées à un client en tant qu'erreurs SOAP. Pour plus d'informations sur la création d'erreurs fortement typées, consultez Spécification et gestion des erreurs dans les contrats et les services et Comment : déclarer des erreurs dans des contrats de service.

Pour protéger un message d'erreur

  1. Créez un type qui représente le message d'erreur. L'exemple suivant crée une classe appelée MathFault contenant deux champs.

  2. Appliquez l'attribut DataContractAttribute au type et un attribut DataMemberAttribute à chaque champ qui doit être sérialisé, tel qu'indiqué dans le code suivant.

  3. Dans l'interface qui retournera l'erreur, appliquez l'attribut FaultContractAttribute à la méthode que retournera l'erreur et affectez le type de la classe d'erreur au paramètre detailType.

  4. Également dans le constructeur, affectez EncryptAndSign à la propriété ProtectionLevel, tel qu'indiqué dans le code suivant.

Protection de parties de message

Utilisez un contrat de message pour protéger les parties d'un message. Pour plus d'informations sur les contrats de messages, consultez Utilisation de contrats de message.

Pour protéger le corps d'un message

  1. Créez un type qui représente le message. L'exemple suivant crée une classe Company contenant deux champs, CompanyName et CompanyID.

  2. Appliquez l'attribut MessageContractAttribute à la classe et affectez EncryptAndSign à la propriété ProtectionLevel.

  3. Appliquez l'attribut MessageHeaderAttribute à un champ qui sera exprimé sous forme d'un en-tête de message et affectez EncryptAndSign à la propriété ProtectionLevel.

  4. Appliquez MessageBodyMemberAttribute aux champs qui seront exprimés sous forme du corps du message et affectez EncryptAndSign à la propriété ProtectionLevel, tel qu'indiqué dans l'exemple suivant.

Exemple

L'exemple suivant définit la propriété ProtectionLevel de plusieurs classes d'attributs à divers emplacements dans un service.

Compilation du code

Le code suivant présente les espaces de noms requis pour compiler l'exemple de code.

Voir aussi

Référence

ServiceContractAttribute
OperationContractAttribute
FaultContractAttribute
MessageContractAttribute
MessageBodyMemberAttribute

Concepts

Fonctionnement des niveaux de protection