Condividi tramite


OperationContractAttribute.ProtectionLevel Proprietà

Definizione

Ottiene o imposta un valore che specifica se i messaggi di un'operazione devono essere crittografati o firmati o se devono presentare entrambi i meccanismi di sicurezza.

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

Valore della proprietà

Uno dei valori di ProtectionLevel. Il valore predefinito è None.

Eccezioni

Il valore non appartiene all'enumerazione ProtectionLevel.

Commenti

Utilizzare la proprietà ProtectionLevel per specificare se i messaggi di un'operazione devono essere crittografati o firmati o se devono presentare entrambi i meccanismi di sicurezza. Il valore impostato corrisponde al valore predefinito per tutti i messaggi specificato per questa operazione, a meno che un ambito più ristretto esegua l'override di questo valore.

È importante ricordare che il comportamento di protezione in fase di esecuzione deriva dalla combinazione dei valori relativi al livello di protezione su cui sono impostate le proprietà seguenti. Queste proprietà presentano una struttura gerarchica. La configurazione del valore esterno determina l'impostazione predefinita per tutti gli ambiti più ristretti a meno che non venga impostato esplicitamente un valore diverso per un ambito più ristretto. In questo caso, il valore esterno rimane l'impostazione predefinita per tutti gli ambiti più ristretti, ad eccezione di quello impostato in modo specifico.

Ad esempio, se la proprietà ServiceContractAttribute.ProtectionLevel è impostata su ProtectionLevel.EncryptAndSign e nessuno degli altri ambiti più ristretti presenta impostazioni riguardanti il livello di protezione, tutti i messaggi di un contratto dell'operazione vengono crittografati e firmati. Se tuttavia per una di queste operazioni la proprietà ProtectionLevel è impostata su ProtectionLevel.Sign, i messaggi di tale operazione vengono firmati. Tutti gli altri messaggi del contratto vengono invece crittografati e firmati.

Per informazioni dettagliate sui livelli di protezione e sui relativi presupposti e ambiti, vedere Informazioni sul livello di protezione.

Gli ambiti di impostazione di questi valori sono:

ServiceContractAttribute.ProtectionLevel

OperationContractAttribute.ProtectionLevel

FaultContractAttribute.ProtectionLevel

MessageContractAttribute.ProtectionLevel

La proprietà MessageContractMemberAttribute.ProtectionLevel è impostata su System.ServiceModel.MessageHeaderAttribute.

La proprietà MessageContractMemberAttribute.ProtectionLevel è impostata su System.ServiceModel.MessageBodyMemberAttribute.

Quando nel contratto non è stato specificato in modo esplicito alcun livello di protezione e l'associazione sottostante supporta la sicurezza (sia essa a livello di trasporto o di messaggio), il livello di protezione effettivo dell'intero contratto è ProtectionLevel.EncryptAndSign. Se l'associazione non supporta la sicurezza (ad esempio BasicHttpBinding), il livello di sicurezza System.Net.Security.ProtectionLevel effettivo è ProtectionLevel.None per l'intero contratto. Ne consegue che a seconda dell'associazione dell'endpoint i client possono richiedere un sistema diverso di protezione a livello di messaggio o di trasporto anche se il contratto prevede il livello di sicurezza ProtectionLevel.None.

Si applica a