如何:设置 ProtectionLevel 属性

通过应用相应的属性 (Attribute) 并设置该属性 (Property) 可设置保护级别。可在服务级设置保护以影响每条消息的所有部件,或者从方法到消息部分逐级递增地设置保护。有关 ProtectionLevel 属性的更多信息,请参见了解保护级别

提示

只能在代码中,而不是在配置中设置保护级别。

为服务签名所有消息

  1. 为服务创建一个接口。

  2. ServiceContractAttribute 属性 (Attribute) 应用于服务,并将 ProtectionLevel 属性 (Property) 设置为 Sign,如下面的代码所示(默认级别为 EncryptAndSign)。

为操作签名所有消息部分

  1. 为服务创建一个接口,并将 ServiceContractAttribute 属性应用于该接口。

  2. 向该接口添加一个方法声明。

  3. OperationContractAttribute 属性 (Attribute) 应用于该方法,并将 ProtectionLevel 属性 (Property) 设置为 Sign,如下面的代码所示。

保护错误消息

服务上引发的异常可作为 SOAP 错误发送到客户端。有关 创建强类型错误的更多信息,请参见在协定和服务中指定和处理错误如何:在服务协定中声明错误

保护错误消息

  1. 创建一个表示错误消息的类型。下面的示例创建一个含有两个字段的名为 MathFault 的类。

  2. DataContractAttribute 属性应用于该类型,并将 DataMemberAttribute 属性应用于应该序列化的每个字段,如下面的代码所示。

  3. 在将返回该错误的接口中,将 FaultContractAttribute 属性应用于将返回错误的方法,并将 detailType 参数设置为错误类的类型。

  4. 同样在构造函数中,将 ProtectionLevel 属性设置为 EncryptAndSign,如下面的代码所示。

保护消息部分

使用消息协定保护消息的各个部分。有关 消息协定的更多信息,请参见使用消息约定

保护消息正文

  1. 创建一个表示消息的类型。下面的示例创建一个 Company 类,其中有两个字段 CompanyNameCompanyID

  2. MessageContractAttribute 属性 (Attribute) 应用于该类,并将 ProtectionLevel 属性 (Property) 设置为 EncryptAndSign

  3. MessageHeaderAttribute 属性 (Attribute) 应用于将表示为消息头的字段,并将 ProtectionLevel 属性 (Property) 设置为 EncryptAndSign

  4. MessageBodyMemberAttribute 应用于将表示为消息正文部分的任何字段,并将 ProtectionLevel 属性应用于 EncryptAndSign,如下面的示例所示。

示例

下面的示例设置位于服务中不同位置的多个属性 (Attribute) 类的 ProtectionLevel 属性 (Property)。

编译代码

下面的代码显示编译该示例代码所必需的命名空间。

另请参见

参考

ServiceContractAttribute
OperationContractAttribute
FaultContractAttribute
MessageContractAttribute
MessageBodyMemberAttribute

概念

了解保护级别