Udostępnij za pośrednictwem


FaultContractAttribute.ProtectionLevel Właściwość

Definicja

Określa poziom ochrony, który wymaga błędu PROTOKOŁU SOAP od powiązania.

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

Wartość właściwości

ProtectionLevel

Jedna z ProtectionLevel wartości. Wartość domyślna to None.

Uwagi

FaultDescription.ProtectionLevel Użyj właściwości , aby określić stopień, w jakim powiązanie musi szyfrować, oznaczać lub oba podczas wysyłania błędu PROTOKOŁU SOAP. Zdecydowanie zaleca się, aby błąd operacji jawnie decydował o wymaganiach dotyczących poziomu ochrony zabezpieczeń w umowie. Domyślny poziom ochrony to ProtectionLevel.None, co oznacza, że definiowany komunikat o błędzie protokołu SOAP nie wymaga szyfrowania ani podpisu cyfrowego (chociaż powiązanie może zapewnić tę obsługę, jeśli jest skonfigurowany do tego celu). Jeśli komunikat o błędzie zawiera informacje poufne lub może prowadzić do problemów z zabezpieczeniami, zdecydowanie zaleca ProtectionLevel się ustawienie właściwości na ProtectionLevel.EncryptAndSign. Aby uzyskać więcej informacji na temat problemów z zabezpieczeniami, zobacz Omówienie poziomu ochrony.

Zachowanie ochrony w czasie wykonywania jest kombinacją właściwości na poziomie ochrony, które mają strukturę hierarchiczną. Ustawienie wartości najbardziej zewnętrznej określa ustawienie domyślne dla wszystkich węższych zakresów, chyba że zostanie jawnie ustawiona inna wartość dla węższego zakresu. W takim przypadku wartość zewnętrzna pozostaje wartością domyślną dla wszystkich węższych zakresów z wyjątkiem tego specjalnie ustawionego.

Jeśli na przykład ServiceContractAttribute.ProtectionLevel ustawiono ProtectionLevel.EncryptAndSign wartość , a żadne inne węższe zakresy nie mają ustawień poziomu ochrony, wszystkie komunikaty w kontrakcie operacji są szyfrowane i podpisane, w tym komunikaty o błędach. Jeśli jednak jedna z tych operacji ma ustawioną OperationContractAttribute wartość ProtectionLevel.Sign, komunikaty dla tej operacji są podpisane, ale wszystkie inne komunikaty w kontrakcie są szyfrowane i podpisane, w tym komunikaty o błędach.

Zakresy, w których są ustawione następujące wartości:

ServiceContractAttribute.ProtectionLevel

OperationContractAttribute.ProtectionLevel

FaultContractAttribute.ProtectionLevel

MessageContractAttribute.ProtectionLevel

Właściwość MessageContractMemberAttribute.ProtectionLevel na .System.ServiceModel.MessageHeaderAttribute

Właściwość MessageContractMemberAttribute.ProtectionLevel na .System.ServiceModel.MessageBodyMemberAttribute

Jeśli w kontrakcie nie określono jawnie poziomu ochrony, a powiązanie bazowe obsługuje zabezpieczenia (zarówno na poziomie transportu, jak i komunikatu), skuteczny poziom ochrony dla całego kontraktu to ProtectionLevel.EncryptAndSign. Jeśli powiązanie nie obsługuje zabezpieczeń (takich jak BasicHttpBinding), skuteczne System.Net.Security.ProtectionLevel jest ProtectionLevel.None dla całej umowy. Wynikiem jest to, że w zależności od powiązania punktu końcowego klienci mogą wymagać innej ochrony zabezpieczeń na poziomie komunikatu lub transportu nawet wtedy, gdy kontrakt określa ProtectionLevel.None.

Dotyczy