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
Cree una interfaz para el servicio.
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
Cree una interfaz para el servicio y aplique el atributo ServiceContractAttribute a la interfaz.
Agregue una declaración de método a la interfaz.
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
Cree un tipo que represente el mensaje de error. El ejemplo siguiente crea una clase denominada
MathFault
con dos campos.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.
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.
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
Cree un tipo que representa al mensaje. El siguiente ejemplo crea una clase
Company
con dos campos,CompanyName
yCompanyID
.Aplique el atributo MessageContractAttribute a la clase y establezca la propiedad ProtectionLevel en EncryptAndSign.
Aplique el atributo MessageHeaderAttribute a un campo que se expresará como un encabezado de mensaje y establezca la propiedad
ProtectionLevel
en EncryptAndSign.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