方法 : ProtectionLevel プロパティを設定する
適切な属性を適用してプロパティを設定することで、保護レベルを設定できます。サービス レベルですべてのメッセージのすべての部分に影響する保護を設定したり、メソッドからメッセージ部分まで、段階的にきめ細かなレベルで保護を設定したりできます。ProtectionLevel プロパティ詳細については、 、「保護レベルの理解」を参照してください。
メモ : |
---|
保護レベルは構成ではなく、コードでのみ設定できます。 |
サービスのすべてのメッセージに署名するには
サービス用のインターフェイスを作成します。
次のコードに示すように、ServiceContractAttribute 属性をサービスに適用し、ProtectionLevel プロパティを Sign に設定します (既定のレベルは EncryptAndSign)。
操作のすべてのメッセージ部分に署名するには
サービスのインターフェイスを作成し、このインターフェイスに ServiceContractAttribute 属性を適用します。
インターフェイスにメソッド宣言を追加します。
次のコードに示すように、メソッドに OperationContractAttribute 属性を適用し、ProtectionLevel プロパティを Sign に設定します。
エラー メッセージの保護
サービスでスローされた例外は、SOAP エラーとしてクライアントに送信できます。厳密に型指定されたエラーの作成詳細については、 、「コントラクトおよびサービスのエラーの指定と処理」および「方法 : サービス コントラクトでのエラーを宣言する」を参照してください。
エラー メッセージを保護するには
エラー メッセージを表す型を作成します。次の例では、2 つのフィールドを持つ
MathFault
という名前のクラスを作成します。次のコードに示すように、型に DataContractAttribute 属性を適用し、シリアル化する必要のある各フィールドに DataMemberAttribute 属性を適用します。
エラーを返すインターフェイスで、エラーを返すメソッドに FaultContractAttribute 属性を適用し、エラー クラスの型に detailType パラメータを設定します。
次のコードに示すように、コンストラクタでも、ProtectionLevel プロパティを EncryptAndSign に設定します。
メッセージ部分の保護
メッセージ部分を保護するには、メッセージ コントラクトを使用します。メッセージ コントラクト詳細については、 、「メッセージ コントラクトの使用」を参照してください。
メッセージ本文を保護するには
メッセージを表す型を作成します。次の例では、
CompanyName
とCompanyID
の 2 つのフィールドを持つCompany
クラスを作成します。このクラスに MessageContractAttribute 属性を適用し、ProtectionLevel プロパティを EncryptAndSign に設定します。
メッセージ ヘッダーとして表現されるフィールドに MessageHeaderAttribute 属性を適用し、
ProtectionLevel
プロパティを EncryptAndSign に設定します。次の例に示すように、メッセージ本文の一部として表現される任意のフィールドに MessageBodyMemberAttribute を適用し、
ProtectionLevel
プロパティを EncryptAndSign に設定します。
例
次の例では、サービスのいろいろな場所で、いくつかの属性クラスの ProtectionLevel
プロパティを設定します。
コードのコンパイル
コード例のコンパイルに必要な名前空間を、次のコードに示します。
関連項目
リファレンス
ServiceContractAttribute
OperationContractAttribute
FaultContractAttribute
MessageContractAttribute
MessageBodyMemberAttribute