OperationContractAttribute.ProtectionLevel Propriedade

Definição

Obtém ou define um valor que especifica se as mensagens de uma operação devem ser criptografadas, assinadas ou ambos.Gets or sets a value that specifies whether the messages of an operation must be encrypted, signed, or both.

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

Valor da propriedade

ProtectionLevel

Um dos valores de ProtectionLevel.One of the ProtectionLevel values. O padrão é None.The default is None.

Exceções

O valor não é um dos valores ProtectionLevel.The value is not one of the ProtectionLevel values.

Comentários

Use a ProtectionLevel propriedade para controlar se as mensagens de uma operação devem ser criptografadas, assinadas ou ambas.Use the ProtectionLevel property to control whether the messages of an operation must be encrypted, signed, or both. O valor definido aqui é o valor padrão para todas as mensagens especificadas para esta operação, a menos que um escopo mais estreito Substitua esse valor.The value set here is the default value for all messages specified for this operation unless a narrower scope overrides this value.

É importante lembrar que o comportamento de proteção em tempo de execução é a combinação dos valores de nível de proteção definidos nas propriedades a seguir.It is important to remember that the protection behavior at runtime is the combination of the protection-level values set on the following properties. Essas propriedades têm uma estrutura hierárquica.These properties have a hierarchical structure. Definir o valor mais externo estabelece a configuração padrão para todos os escopos mais estreitos, a menos que um valor diferente para um escopo mais estreito seja definido explicitamente.Setting the outermost value establishes the default setting for all narrower scopes unless a different value for a narrower scope is explicitly set. Nesse caso, o valor externo permanece o padrão para todos os escopos mais estreitos, com exceção do definido especificamente.In this case, the outer value remains the default for all narrower scopes with the exception of that specifically set.

Por exemplo, se ServiceContractAttribute.ProtectionLevel é definido como ProtectionLevel.EncryptAndSign e nenhum outro escopo mais estreito tem configurações de nível de proteção, todas as mensagens em um contrato de operação são criptografadas e assinadas.For example, if ServiceContractAttribute.ProtectionLevel is set to ProtectionLevel.EncryptAndSign and no other narrower scopes have protection level settings, all messages in an operation contract are encrypted and signed. No entanto, se uma dessas operações tiver o ProtectionLevel definido como ProtectionLevel.Sign , as mensagens para essa operação serão assinadas, mas todas as outras mensagens no contrato serão criptografadas e assinadas.If, however, one of those operations has the ProtectionLevel set to ProtectionLevel.Sign, then the messages for that operation are signed but all other messages in the contract are encrypted and signed.

Para obter detalhes sobre os níveis de proteção e suas suposições e escopos, consulte noções básicassobre o nível de proteção.For details about protection levels and their assumptions and scopes, see Understanding Protection Level.

Os escopos em que esses valores são definidos são:The scopes at which these values are set are:

ServiceContractAttribute.ProtectionLevel

OperationContractAttribute.ProtectionLevel

FaultContractAttribute.ProtectionLevel

MessageContractAttribute.ProtectionLevel

A MessageContractMemberAttribute.ProtectionLevel propriedade em System.ServiceModel.MessageHeaderAttribute .The MessageContractMemberAttribute.ProtectionLevel property on System.ServiceModel.MessageHeaderAttribute.

A MessageContractMemberAttribute.ProtectionLevel propriedade em System.ServiceModel.MessageBodyMemberAttribute .The MessageContractMemberAttribute.ProtectionLevel property on System.ServiceModel.MessageBodyMemberAttribute.

Quando não há nenhum nível de proteção explicitamente especificado no contrato e a associação subjacente dá suporte à segurança (seja no nível de transporte ou de mensagem), o nível de proteção efetivo para todo o contrato é ProtectionLevel.EncryptAndSign .When there is no protection level explicitly specified on the contract and the underlying binding supports security (whether at the transport or message level), the effective protection level for the whole contract is ProtectionLevel.EncryptAndSign. Se a associação não oferecer suporte à segurança (como BasicHttpBinding ), o efetivo System.Net.Security.ProtectionLevel será ProtectionLevel.None para todo o contrato.If the binding does not support security (such as BasicHttpBinding), the effective System.Net.Security.ProtectionLevel is ProtectionLevel.None for the whole contract. O resultado é que, dependendo da Associação de ponto de extremidade, os clientes podem exigir uma proteção de segurança de nível de transporte ou mensagem diferente mesmo quando o contrato especifica ProtectionLevel.None .The result is that depending upon the endpoint binding, clients can require different message or transport level security protection even when the contract specifies ProtectionLevel.None.

Aplica-se a