FaultContractAttribute.ProtectionLevel Свойство

Определение

Задает уровень защиты, который требуется от привязки для ошибки SOAP.

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

Значение свойства

ProtectionLevel

Одно из значений перечисления ProtectionLevel. Значение по умолчанию — None.

Комментарии

Свойство FaultDescription.ProtectionLevel определяет, как привязка должна выполнять шифрование, подписывание или оба эти действия при передаче сообщения об ошибке SOAP. Настоятельно рекомендуется, чтобы ошибка операции явным образом определяла требования к уровню защиты безопасности в контракте. Уровень защиты по умолчанию — ProtectionLevel.Noneэто означает, что определяемое сообщение об ошибке SOAP не требует шифрования или цифровой подписи (хотя привязка может обеспечить эту поддержку, если она настроена для этого). Если сообщение об ошибке содержит конфиденциальные сведения или может привести к проблемам безопасности, настоятельно рекомендуется ProtectionLevel задать для свойства значение ProtectionLevel.EncryptAndSign. Дополнительные сведения о проблемах безопасности см. в разделе "Общие сведения об уровне защиты".

Поведение защиты в среде выполнения представляет собой сочетание свойств уровня защиты, которые имеют иерархическую структуру. При задании внешнего значения устанавливается значение по умолчанию для всех более узких областей, если явно не задано другое значение для более узкой области. В этом случае внешнее значение остается значением по умолчанию для всех более узких областей за исключением тех областей, для которых задано иное значение.

Например, если ServiceContractAttribute.ProtectionLevel задано значение ProtectionLevel.EncryptAndSign , а другие узкие области не имеют параметров уровня защиты, все сообщения в контракте операции шифруются и подписываются, включая сообщения об ошибках. Однако если для одной из этих операций задано значениеProtectionLevel.Sign, то сообщения для этой операции OperationContractAttribute подписываются, но все остальные сообщения в контракте шифруются и подписываются, включая сообщения об ошибках.

Ниже приводятся области, в которых заданы эти значения.

ServiceContractAttribute.ProtectionLevel

OperationContractAttribute.ProtectionLevel

FaultContractAttribute.ProtectionLevel

MessageContractAttribute.ProtectionLevel

Свойство MessageContractMemberAttribute.ProtectionLevel атрибута System.ServiceModel.MessageHeaderAttribute.

Свойство MessageContractMemberAttribute.ProtectionLevel атрибута System.ServiceModel.MessageBodyMemberAttribute.

Если в контракте отсутствует явно заданный уровень защиты, а базовая привязка поддерживает безопасность (как на транспортном уровне, так и на уровне сообщений), эффективным уровнем защиты для всего контракта является ProtectionLevel.EncryptAndSign. Если привязка не поддерживает безопасность (например, BasicHttpBinding), эффективным уровнем System.Net.Security.ProtectionLevel является ProtectionLevel.None для всего контракта. В результате в зависимости от привязки конечной точки клиенты могут требовать разную степень защиты на уровне сообщений или транспортном уровне, даже если контракт задает ProtectionLevel.None.

Применяется к