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.ProtectionLevelProtectionLevel.None。 因此,根据终结点绑定,即使协定指定了 ProtectionLevel.None,客户端也可以要求不同的消息或传输级别安全保护。

适用于