ServiceContractAttribute.ProtectionLevel Proprietà

Definizione

Specifica se l'associazione del contratto deve supportare il valore della proprietà ProtectionLevel.

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à

ProtectionLevel

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

Eccezioni

Il valore non appartiene all'enumerazione ProtectionLevel.

Commenti

Utilizzare la ProtectionLevel proprietà per specificare il grado in cui l'associazione del contratto richiede la crittografia, le firme digitali o entrambi gli endpoint che espongono il contratto. Il valore impostato per questa proprietà rappresenta il valore predefinito per tutti i messaggi di operazione, compresi gli errori.

È 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à OperationContractAttribute è 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