OperationContractAttribute.ProtectionLevel Egenskap

Definition

Hämtar eller anger ett värde som anger om meddelandena för en åtgärd måste krypteras, signeras eller båda.

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

Egenskapsvärde

Ett av ProtectionLevel värdena. Standardvärdet är None.

Undantag

Värdet är inte ett av ProtectionLevel värdena.

Kommentarer

Använd egenskapen ProtectionLevel för att styra om meddelandena i en åtgärd måste vara krypterade, signerade eller båda. Värdet som anges här är standardvärdet för alla meddelanden som anges för den här åtgärden om inte ett smalare omfång åsidosätter det här värdet.

Det är viktigt att komma ihåg att skyddsbeteendet vid körning är kombinationen av de skyddsnivåvärden som anges för följande egenskaper. Dessa egenskaper har en hierarkisk struktur. Om du anger det yttersta värdet upprättas standardinställningen för alla smalare omfång såvida inte ett annat värde för ett smalare omfång uttryckligen anges. I det här fallet förblir det yttre värdet standardvärdet för alla smalare omfång med undantag för den specifika uppsättningen.

Om ServiceContractAttribute.ProtectionLevel till exempel är inställt på ProtectionLevel.EncryptAndSign och inga andra smalare omfång har inställningar för skyddsnivå krypteras och signeras alla meddelanden i ett åtgärdskontrakt. Men om en av dessa åtgärder har ProtectionLevel värdet ProtectionLevel.Sign, signeras meddelandena för den åtgärden, men alla andra meddelanden i kontraktet krypteras och signeras.

Mer information om skyddsnivåer och deras antaganden och omfattningar finns i Förstå skyddsnivå.

De omfång där dessa värden anges är:

ServiceContractAttribute.ProtectionLevel

OperationContractAttribute.ProtectionLevel

FaultContractAttribute.ProtectionLevel

MessageContractAttribute.ProtectionLevel

Egenskapen MessageContractMemberAttribute.ProtectionLevelSystem.ServiceModel.MessageHeaderAttribute.

Egenskapen MessageContractMemberAttribute.ProtectionLevelSystem.ServiceModel.MessageBodyMemberAttribute.

När det inte finns någon uttryckligen angiven skyddsnivå i kontraktet och den underliggande bindningen stöder säkerhet (oavsett om det är på transport- eller meddelandenivå) är ProtectionLevel.EncryptAndSignden effektiva skyddsnivån för hela kontraktet . Om bindningen inte stöder säkerhet (till exempel BasicHttpBinding) System.Net.Security.ProtectionLevel gäller ProtectionLevel.None hela kontraktet. Resultatet är att beroende på slutpunktsbindningen kan klienter kräva olika säkerhetsskydd på meddelande- eller transportnivå även när kontraktet anger ProtectionLevel.None.

Gäller för