다음을 통해 공유


방법: ProtectionLevel 속성 설정

적절한 특성을 적용하고 속성을 설정하여 보호 수준을 설정할 수 있습니다. 각 메시지의 모든 부분에 영향을 주도록 서비스 수준에서 보호를 설정하거나 메서드에서 메시지 부분으로 점차 세부적인 수준에서 보호를 설정할 수 있습니다. ProtectionLevel 속성에 대한 자세한 내용은 보호 수준 이해를 참조하십시오.

참고

구성이 아닌 코드에서만 보호 수준을 설정할 수 있습니다.

서비스의 모든 메시지를 서명하려면

  1. 서비스에 대한 인터페이스를 만듭니다.

  2. 다음 코드에 표시된 것처럼 ServiceContractAttribute 특성을 서비스에 적용하고 ProtectionLevel 속성을 Sign으로 설정합니다. 기본 수준은 EncryptAndSign입니다.

작업에 대한 모든 메시지 부분을 서명하려면

  1. 서비스에 대한 인터페이스를 만들고 ServiceContractAttribute 특성을 인터페이스에 적용합니다.

  2. 메서드 선언을 인터페이스에 추가합니다.

  3. 다음 코드에 표시된 것처럼 OperationContractAttribute 특성을 메서드에 적용하고 ProtectionLevel 속성을 Sign으로 설정합니다.

오류 메시지 보호

서비스에 throw된 예외를 클라이언트에 SOAP 오류로 보낼 수 있습니다. 강력한 형식의 오류 만들기에 대한 자세한 내용은 계약 및 서비스에서 오류 지정 및 처리방법: 서비스 계약에 오류 선언을 참조하십시오.

오류 메시지를 보호하려면

  1. 오류 메시지를 나타내는 형식을 만듭니다. 다음 예제에서는 두 개의 필드를 사용하여 MathFault라는 클래스를 만듭니다.

  2. 다음 코드에 표시된 것처럼 DataContractAttribute 특성을 형식에 적용하고 DataMemberAttribute 특성을 serialize해야 하는 각 필드에 적용합니다.

  3. 오류를 반환할 인터페이스에서 FaultContractAttribute 특성을 오류를 반환할 메서드에 적용하고 detailType 매개 변수를 오류 클래스 형식으로 설정합니다.

  4. 또한 다음 코드에 표시된 것처럼 생성자에서 ProtectionLevel 속성을 EncryptAndSign으로 설정합니다.

메시지 부분 보호

메시지 계약을 사용하여 메시지 부분을 보호합니다. 메시지 계약에 대한 자세한 내용은 메시지 계약 사용을 참조하십시오.

메시지 본문을 보호하려면

  1. 메시지를 나타내는 형식을 만듭니다. 다음 예제에서는 CompanyNameCompanyID 필드를 사용하여 Company를 만듭니다.

  2. MessageContractAttribute 특성을 클래스에 적용하고 ProtectionLevel 속성을 EncryptAndSign으로 설정합니다.

  3. MessageHeaderAttribute 특성을 메시지 헤더로 표시될 필드에 적용하고 ProtectionLevel 특성을 EncryptAndSign으로 설정합니다.

  4. 다음 예제에 표시된 것처럼 MessageBodyMemberAttribute를 메시지 본문의 일부로 표시될 필드에 적용하고 ProtectionLevel 속성을 EncryptAndSign으로 설정합니다.

예제

다음 예제에서는 서비스의 다양한 위치에서 여러 특성 클래스의 ProtectionLevel 속성을 설정합니다.

코드 컴파일

다음 코드에서는 예제 코드를 컴파일하는 데 필요한 네임스페이스를 보여 줍니다.

참고 항목

참조

ServiceContractAttribute
OperationContractAttribute
FaultContractAttribute
MessageContractAttribute
MessageBodyMemberAttribute

개념

보호 수준 이해