Share via


Gewusst wie: Festlegen der ProtectionLevel-Eigenschaft

Sie können die Schutzebene festlegen, indem Sie ein entsprechendes Attribut anwenden und die Eigenschaft einrichten. Sie können den Schutz auf Dienstebene einrichten, um alle Teile einer Nachricht anzupassen. Darüber hinaus können Sie den Schutz auf stärker unterteilten Ebenen einrichten – von den Methoden zu den Nachrichtenteilen. Weitere Informationen zur ProtectionLevel-Eigenschaft finden Sie unter Grundlagen der Schutzebene.

Tipp

Schutzebenen können nur im Code, nicht in der Konfiguration festgelegt werden.

So signieren Sie alle Nachrichten für einen Dienst

  1. Erstellen Sie eine Schnittstelle für den Dienst.

  2. Wenden Sie das ServiceContractAttribute-Attribut für den Dienst an, und legen Sie die ProtectionLevel-Eigenschaft auf Sign fest. Dies wird im folgenden Code veranschaulicht (die Standardebene ist EncryptAndSign).

So signieren Sie alle Nachrichtenteile für einen Vorgang

  1. Erstellen Sie eine Schnittstelle für den Dienst, und wenden Sie das ServiceContractAttribute-Attribut auf die Schnittstelle an.

  2. Fügen Sie der Schnittstelle eine Methodendeklaration hinzu.

  3. Wenden Sie das OperationContractAttribute-Attribut auf die Methode an, und setzen Sie die ProtectionLevel-Eigenschaft auf Sign. Dies wird im folgenden Code veranschaulicht.

Schützen von Fehlernachrichten

Ausnahmen, die auf einem Dienst ausgelöst werden, können auf einem Client als SOAP-Fehler eingerichtet werden. Weitere Informationen zum Erstellen stark typisierter Fehler finden Sie unter Angeben und Behandeln von Fehlern in Verträgen und Diensten und Gewusst wie: Deklarieren von Fehlern in Dienstverträgen.

So schützen Sie eine Fehlernachricht

  1. Erstellen Sie einen Typ, der die Fehlernachricht darstellt. Das folgende Beispiel erstellt eine Klasse mit dem Namen MathFault und zwei Feldern.

  2. Wenden Sie das DataContractAttribute-Attribut auf den Typ und das DataMemberAttribute-Attribut für jedes Feld an, das serialisiert werden soll. Der folgende Code veranschaulicht dies.

  3. Wenden Sie in der Schnittstelle, die den Fehler zurückgibt, das FaultContractAttribute-Attribut auf die Methode an, die den Fehler zurückgibt, und setzen Sie den detailType-Parameter auf den Typ der Fehlerklasse.

  4. Setzen Sie ebenfalls im Konstruktor die ProtectionLevel-Eigenschaft auf EncryptAndSign. Dies wird im folgenden Code veranschaulicht.

Schützen von Nachrichtenteilen

Verwenden Sie einen Nachrichtenvertrag, um Teile einer Nachricht zu schützen. Weitere Informationen zu Nachrichtenverträgen finden Sie unter Verwendung von Nachrichtenverträgen.

So schützen Sie einen Nachrichtentext

  1. Erstellen Sie einen Typ, der die Nachricht darstellt. Das folgende Beispiel erstellt eine Company-Klasse mit zwei Feldern, CompanyName und CompanyID.

  2. Wenden Sie das MessageContractAttribute-Attribut auf die Klasse an, und setzen Sie die ProtectionLevel-Eigenschaft auf EncryptAndSign.

  3. Wenden Sie das MessageHeaderAttribute-Attribut auf ein Feld an, das als Nachrichtenheader ausgedrückt wird, und setzen Sie die ProtectionLevel-Eigenschaft auf EncryptAndSign.

  4. Wenden Sie MessageBodyMemberAttribute auf jegliches Feld an, das als Teil des Nachrichtentexts ausgedrückt wird, und setzen Sie die ProtectionLevel -Eigenschaft auf EncryptAndSign. Dies wird im folgenden Beispiel veranschaulicht.

Beispiel

Im folgenden Beispiel wird die ProtectionLevel-Eigenschaft mehrerer Attributklassen an verschiedenen Stellen in einem Dienst festgelegt.

Kompilieren des Codes

Der folgende Code zeigt die für die Kompilierung des Beispielcodes erforderlichen Namespaces.

Siehe auch

Referenz

ServiceContractAttribute
OperationContractAttribute
FaultContractAttribute
MessageContractAttribute
MessageBodyMemberAttribute

Konzepte

Grundlagen der Schutzebene