Поделиться через


OperationContractAttribute.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. Значение по умолчанию — None.

Исключения

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

Комментарии

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

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

Например, если для уровня ServiceContractAttribute.ProtectionLevel задано значение ProtectionLevel.EncryptAndSign и другие более узкие области не имеют параметров уровня защиты, все сообщения в контракте операции шифруются и подписываются. Однако если атрибуту ProtectionLevel одной из этих операций присвоено значение 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.

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