Partager via


OperationContractAttribute.ProtectionLevel Propriété

Définition

Obtient ou définit une valeur qui spécifie si les messages d'une opération doivent être chiffrés, signés ou les deux.

public:
 property System::Net::Security::ProtectionLevel ProtectionLevel { System::Net::Security::ProtectionLevel get(); void set(System::Net::Security::ProtectionLevel value); };
public System.Net.Security.ProtectionLevel ProtectionLevel { get; set; }
member this.ProtectionLevel : System.Net.Security.ProtectionLevel with get, set
Public Property ProtectionLevel As ProtectionLevel

Valeur de propriété

Une des valeurs de l'objet ProtectionLevel. La valeur par défaut est None.

Exceptions

La valeur ne fait pas partie des valeurs ProtectionLevel.

Remarques

Utilisez la propriété ProtectionLevel pour contrôler si les messages d'une opération doivent être chiffrés, signés ou les deux. La valeur définie ici est la valeur par défaut pour tous les messages spécifiés pour cette opération, sauf si une portée plus restreinte se substitue à cette valeur.

Il est important de se rappeler que le comportement de protection au moment de l'exécution est la combinaison des valeurs de niveau de protection affectées aux propriétés suivantes. Ces propriétés ont une structure hiérarchique. La définition de la valeur la plus à l'extérieur établit le paramètre par défaut pour toutes les portées plus restreintes, sauf si une valeur différente est définie explicitement pour une portée plus restreinte. Dans ce cas, la valeur externe reste la valeur par défaut pour toutes les portées plus restreintes à l'exception de celles qui sont spécifiquement définies.

Par exemple, si ServiceContractAttribute.ProtectionLevel a la valeur ProtectionLevel.EncryptAndSign et qu'aucune autre portée plus étroite n'a de paramètres de niveau de protection, tous les messages dans un contrat d'opération sont chiffrés et signés, y compris les messages d'erreur. Toutefois, si vous affectez au jeu ProtectionLevel de l'une de ces opérations, la valeur ProtectionLevel.Sign, les messages pour cette opération sont signés mais tous les autres messages dans le contrat sont chiffrés et signés.

Pour plus d’informations sur les niveaux de protection et leurs hypothèses et étendues, consultez Présentation du niveau de protection.

Les portées auxquelles ces valeurs sont affectées sont les suivantes :

ServiceContractAttribute.ProtectionLevel

OperationContractAttribute.ProtectionLevel

FaultContractAttribute.ProtectionLevel

MessageContractAttribute.ProtectionLevel

Propriété MessageContractMemberAttribute.ProtectionLevel sur System.ServiceModel.MessageHeaderAttribute.

Propriété MessageContractMemberAttribute.ProtectionLevel sur System.ServiceModel.MessageBodyMemberAttribute.

Lorsque aucun niveau de protection n’est spécifié explicitement sur le contrat et que la liaison sous-jacente prend en charge la sécurité (au niveau du transport ou du message), le niveau de protection effectif pour l’ensemble du contrat est ProtectionLevel.EncryptAndSign. Si la liaison ne prend pas en charge la sécurité (comme BasicHttpBinding), le System.Net.Security.ProtectionLevel effectif est ProtectionLevel.None pour l'ensemble du contrat. Le résultat est que selon la liaison du point de terminaison, les clients peuvent avoir besoin d’une protection de sécurité au niveau du message ou du transport différente même lorsque le contrat spécifie ProtectionLevel.None.

S’applique à