次の方法で共有


ServiceContractAttribute.ProtectionLevel プロパティ

定義

コントラクトのバインドで、ProtectionLevel プロパティの値をサポートする必要があるかどうかを指定します。

public:
 property System::Net::Security::ProtectionLevel ProtectionLevel { System::Net::Security::ProtectionLevel get(); void set(System::Net::Security::ProtectionLevel value); };
public System.Net.Security.ProtectionLevel ProtectionLevel { get; set; }
member this.ProtectionLevel : System.Net.Security.ProtectionLevel with get, set
Public Property ProtectionLevel As ProtectionLevel

プロパティ値

ProtectionLevel

ProtectionLevel 値のいずれか 1 つ。 既定値は、None です。

例外

値が、ProtectionLevel 値ではありません。

注釈

このプロパティを ProtectionLevel 使用して、コントラクト バインディングがコントラクトを公開するエンドポイントの暗号化、デジタル署名、またはその両方を必要とする度合いを指定します。 ここで設定する値は、エラーを含むすべての操作メッセージの既定値となります。

ランタイムでの保護動作は、次のプロパティで設定された保護レベル値の組み合わせであることに注意してください。 こうしたプロパティは、階層構造を持ちます。 最も外側の値を設定すると、それより狭いスコープで異なる値を明示的に設定していなければ、より狭いスコープでその既定の設定が定まります。 この場合、外側の値は特に設定された値を除いて、それより狭いすべてのスコープで既定の設定として残ります。

たとえば、ServiceContractAttribute.ProtectionLevelProtectionLevel.EncryptAndSign に設定され、他のより狭いスコープに保護レベル設定が存在しない場合、操作コントラクト内のすべてのメッセージが暗号化および署名されます。 ただし、こうした操作の 1 つで OperationContractAttributeProtectionLevel.Sign に設定されている場合、その操作のメッセージは署名されますが、コントラクト内の他のすべてのメッセージは暗号化および署名されます。

保護レベルとその前提条件とスコープの詳細については、「 保護レベルについて」を参照してください。

こうした値が設定されるスコープは次のとおりです。

ServiceContractAttribute.ProtectionLevel

OperationContractAttribute.ProtectionLevel

FaultContractAttribute.ProtectionLevel

MessageContractAttribute.ProtectionLevel

MessageContractMemberAttribute.ProtectionLevelSystem.ServiceModel.MessageHeaderAttribute プロパティ。

MessageContractMemberAttribute.ProtectionLevelSystem.ServiceModel.MessageBodyMemberAttribute プロパティ。

コントラクト上で明示的に指定された保護レベルが存在せず、基になるバインドで (トランスポート レベルまたはメッセージ レベルを問わず) セキュリティをサポートする場合、コントラクト全体の有効な保護レベルは ProtectionLevel.EncryptAndSign です。 バインドで (BasicHttpBinding などの) セキュリティをサポートしない場合、コントラクト全体の有効な System.Net.Security.ProtectionLevelProtectionLevel.None です。 したがって、コントラクトで ProtectionLevel.None を指定している場合でも、エンドポイント バインドによってはクライアントが要求するメッセージ レベルまたはトランスポート レベルのセキュリティ保護が異なる場合があります。

適用対象