Compartir a través de


Cómo: Establecer la propiedad ProtectionLevel

Puede establecer el nivel de protección aplicando un atributo adecuado y estableciendo la propiedad. Puede establecer la protección en el nivel del servicio para que afecte a todas las partes de cada mensaje o puede establecer la protección en los niveles cada vez más individuales, desde los métodos a las partes del mensaje. Para obtener más información acerca de la propiedad ProtectionLevel, vea Descripción de los niveles de protección.

Nota

Puede establecer niveles de protección sólo mediante código, no mediante configuración.

Para firmar todos los mensajes para un servicio

  1. Cree una interfaz para el servicio.

  2. Aplique el atributo ServiceContractAttribute al servicio y establezca la propiedad ProtectionLevel en Sign, como se muestra en el código siguiente (el nivel predeterminado es EncryptAndSign).

Para firmar todas las partes del mensaje para una operación

  1. Cree una interfaz para el servicio y aplique el atributo ServiceContractAttribute a la interfaz.

  2. Agregue una declaración de método a la interfaz.

  3. Aplique el atributo OperationContractAttribute al método, y establezca la propiedad ProtectionLevel en Sign, como se muestra en el siguiente código.

Protección de mensajes de error

Las excepciones que se producen en un servicio se pueden enviar a un cliente como errores de SOAP. Para obtener más información acerca de creación de errores con establecimiento inflexible de tipos, vea Especificación y administración de errores en contratos y servicios y Cómo declarar errores en contratos de servicios.

Para proteger un mensaje de error

  1. Cree un tipo que represente el mensaje de error. El ejemplo siguiente crea una clase denominada MathFault con dos campos.

  2. Aplique el atributo DataContractAttribute al tipo y un atributo DataMemberAttribute a cada campo que se debería serializar, como se muestra en el código siguiente.

  3. En la interfaz que devolverá el error, aplique el atributo FaultContractAttribute al método que devolverá el error y establezca el parámetro detailType en el tipo de la clase de error.

  4. También en el constructor, establezca la propiedad ProtectionLevel en EncryptAndSign, como se muestra en el código siguiente.

Protección de las partes del mensaje

Utilice un contrato del mensaje para proteger partes de un mensaje. Para obtener más información acerca de contratos de mensaje, vea Usar contratos de mensaje.

Para proteger el cuerpo de un mensaje

  1. Cree un tipo que representa al mensaje. El siguiente ejemplo crea una clase Company con dos campos, CompanyName y CompanyID.

  2. Aplique el atributo MessageContractAttribute a la clase y establezca la propiedad ProtectionLevel en EncryptAndSign.

  3. Aplique el atributo MessageHeaderAttribute a un campo que se expresará como un encabezado de mensaje y establezca la propiedad ProtectionLevel en EncryptAndSign.

  4. Aplique el MessageBodyMemberAttribute a cualquier campo que se expresará como parte del mensaje y establezca la propiedad ProtectionLevel en EncryptAndSign, como se muestra en el siguiente ejemplo.

Ejemplo

El ejemplo siguiente establece la propiedad ProtectionLevel de varias clases de atributo en varios lugares de un servicio.

Compilar el código

En el ejemplo de código siguiente se muestran los espacios de nombres requeridos para compilar el código de ejemplo.

Consulte también

Referencia

ServiceContractAttribute
OperationContractAttribute
FaultContractAttribute
MessageContractAttribute
MessageBodyMemberAttribute

Conceptos

Descripción de los niveles de protección