ServiceContractAttribute.ProtectionLevel Свойство

Определение

Указывает, должна ли привязка для контракта поддерживать значение свойства 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

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

ProtectionLevel

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

Исключения

Данное значение не является одним из значений ProtectionLevel.

Комментарии

ProtectionLevel Используйте свойство, чтобы указать степень, в которой привязка контракта требует шифрования, цифровых подписей или обоих конечных точек, которые предоставляют контракт. Заданное здесь значение является значением по умолчанию для всех сообщений операций, включая ошибки.

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

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

Дополнительные сведения об уровнях защиты и их допущениях и областях см. в разделе "Общие сведения об уровне защиты".

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

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.

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