OperationContractAttribute Klass

Definition

Anger att en metod definierar en åtgärd som ingår i ett tjänstkontrakt i ett Windows Communication Foundation-program (WCF).

public ref class OperationContractAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Method)]
public sealed class OperationContractAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Method)>]
type OperationContractAttribute = class
    inherit Attribute
Public NotInheritable Class OperationContractAttribute
Inherits Attribute
Arv
OperationContractAttribute
Attribut

Exempel

I följande kodexempel visas ett enkelt tjänstkontrakt med en åtgärd.

using System;
using System.Collections.Generic;
using System.Net.Security;
using System.ServiceModel;
using System.Text;

namespace Microsoft.WCF.Documentation
{
  [ServiceContract(Namespace="Microsoft.WCF.Documentation")]
  public interface ISampleService{
    // This operation specifies an explicit protection level requirement.
    [OperationContract(ProtectionLevel=ProtectionLevel.EncryptAndSign)]
    string SampleMethod(string msg);
  }

  class SampleService : ISampleService
  {
  #region ISampleService Members

  public string  SampleMethod(string msg)
  {
    Console.WriteLine("Called with: {0}", msg);
      return "The service greets you: " + msg;
  }

  #endregion
  }
}
Imports System.Net.Security
Imports System.ServiceModel
Imports System.Text

Namespace Microsoft.WCF.Documentation
  <ServiceContract(Namespace:="Microsoft.WCF.Documentation")> _
  Public Interface ISampleService
    ' This operation specifies an explicit protection level requirement.
    <OperationContract(ProtectionLevel:=ProtectionLevel.EncryptAndSign)> _
    Function SampleMethod(ByVal msg As String) As String
  End Interface

  Friend Class SampleService
      Implements ISampleService
  #Region "ISampleService Members"

  Public Function SampleMethod(ByVal msg As String) As String Implements ISampleService.SampleMethod
    Console.WriteLine("Called with: {0}", msg)
       Return "The service greets you: " & msg
  End Function

  #End Region
  End Class
End Namespace

Följande exempel är en tjänst som implementerar ett implicit tjänstkontrakt som anger tre åtgärder. Två av åtgärderna är dubbelriktade åtgärder som returnerar underliggande svarsmeddelanden till anroparen oavsett vilket returvärde som är. Den tredje åtgärden tar emot ett anrop, ett underliggande inkommande meddelande, men returnerar inget underliggande svarsmeddelande.

[ServiceContractAttribute]
public class OneAndTwoWay
{
  // The client waits until a response message appears.
  [OperationContractAttribute]
  public int MethodOne (int x, out int y)
  {
    y = 34;
    return 0;
  }

  // The client waits until an empty response message appears.
  [OperationContractAttribute]
  public void MethodTwo (int x)
  {
    return;
  }

  // The client returns as soon as an outbound message
  // is dispatched to the service; no response
  // message is generated or sent from the service.
  [OperationContractAttribute(IsOneWay=true)]
  public void MethodThree (int x)
  {
    return;
  }
}

Kommentarer

OperationContractAttribute Använd på en metod för att ange att metoden implementerar en tjänståtgärd som en del av ett tjänstkontrakt (som anges av ett ServiceContractAttribute attribut).

OperationContractAttribute Använd egenskaperna för att styra åtgärdens struktur och de värden som uttrycks i metadata:

  • Egenskapen Action anger den åtgärd som unikt identifierar den här åtgärden. WCF skickar begärandemeddelanden till metoder baserat på deras åtgärd.

  • Egenskapen AsyncPattern anger att åtgärden implementeras eller kan anropas asynkront med hjälp av ett Begin/End-metodpar.

  • Egenskapen HasProtectionLevel anger om egenskapen uttryckligen ProtectionLevel har angetts.

  • Egenskapen IsOneWay anger att åtgärden endast består av ett enda indatameddelande. Åtgärden har inget associerat utdatameddelande.

  • Egenskapen IsInitiating anger om den här åtgärden kan vara den första åtgärden i en session.

  • Egenskapen IsTerminating anger om WCF försöker avsluta den aktuella sessionen när åtgärden har slutförts.

  • Egenskapen ProtectionLevel anger den säkerhet på meddelandenivå som en åtgärd kräver vid körning.

  • Egenskapen ReplyAction anger åtgärden för svarsmeddelandet för åtgärden.

Attributet OperationContractAttribute deklarerar att en metod är en åtgärd i ett tjänstkontrakt. Endast metoder som tillskrivs OperationContractAttribute är exponerade som tjänståtgärder. Ett tjänstkontrakt utan några metoder som markerats med exponerar OperationContractAttribute inga åtgärder.

Egenskapen AsyncPattern anger att ett par Begin<methodName> - och End<methodName-metoder> utgör en enda åtgärd som implementeras asynkront (oavsett om det är på klienten eller tjänsten). Möjligheten för en tjänst att implementera åtgärder asynkront är en tjänstimplementeringsinformation och exponeras inte i metadata (till exempel Web Services Description Language (WSDL)).

På samma sätt kan klienter välja att anropa åtgärder asynkront oberoende av hur tjänstmetoden implementeras. Att anropa tjänståtgärder asynkront i klienten rekommenderas när en tjänstmetod tar lite tid men måste returnera information direkt till klienten. Mer information finns i AsyncPattern.

Egenskapen IsOneWay anger att en metod inte returnerar något värde alls, inklusive ett tomt underliggande svarsmeddelande. Den här typen av metod är användbar för meddelanden eller kommunikation i händelsestil. Metoder av den här typen kan inte returnera ett svarsmeddelande, så metodens deklaration måste returnera void.

Important

När du programmatiskt hämtar informationsarkivet i det här attributet använder du ContractDescription klassen i stället för reflektion.

Note

Om egenskapen IsOneWay är inställd falsepå , (standard), är även metoder som returnerar void tvåvägsmetoder på den underliggande meddelandenivån. I det här fallet skapar och skickar infrastrukturen ett tomt meddelande som anger för anroparen att metoden har returnerats. Med den här metoden kan programmet och infrastrukturen skicka tillbaka felinformation (till exempel ett SOAP-fel) till klienten. Inställningen IsOneWay till true är det enda sättet att förhindra att ett svarsmeddelande skapas och skickas. Mer information finns iOne-Way Services.

Egenskaperna Action och ReplyAction kan användas inte bara för att ändra standardåtgärden för SOAP-meddelanden, utan även för att skapa hanterare för okända meddelanden eller för att inaktivera tilläggsåtgärder för direkt meddelandeprogrammering. Använd egenskapen IsInitiating för att förhindra att klienter anropar en viss tjänståtgärd före andra åtgärder. Använd egenskapen IsTerminating för att låta WCF stänga kanalen när klienter anropar en viss tjänståtgärd. Mer information finns i Använda sessioner.

Med ProtectionLevel egenskapen kan du ange i åtgärdskontraktet om åtgärdsmeddelandena är signerade, krypterade eller signerade och krypterade. Om en bindning inte kan tillhandahålla den säkerhetsnivå som krävs av kontraktet utlöses ett undantag vid körning. Mer information finns i ProtectionLevel och Förstå skyddsnivå.

Konstruktorer

Name Description
OperationContractAttribute()

Initierar en ny instans av OperationContractAttribute klassen.

Egenskaper

Name Description
Action

Hämtar eller anger åtgärden WS-Addressing för begärandemeddelandet.

AsyncPattern

Anger att en åtgärd implementeras asynkront med hjälp av ett Begin<methodName> - och End<methodName-metodpar> i ett tjänstkontrakt.

HasProtectionLevel

Hämtar ett värde som anger om meddelandena för den här åtgärden måste vara krypterade, signerade eller båda.

IsInitiating

Hämtar eller anger ett värde som anger om metoden implementerar en åtgärd som kan initiera en session på servern (om en sådan session finns).

IsOneWay

Hämtar eller anger ett värde som anger om en åtgärd returnerar ett svarsmeddelande.

IsTerminating

Hämtar eller anger ett värde som anger om tjänståtgärden gör att servern stänger sessionen efter att svarsmeddelandet har skickats.

Name

Hämtar eller anger namnet på operationen.

ProtectionLevel

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

ReplyAction

Hämtar eller anger värdet för SOAP-åtgärden för åtgärdens svarsmeddelande.

TypeId

När den implementeras i en härledd klass hämtar du en unik identifierare för den här Attribute.

(Ärvd från Attribute)

Metoder

Name Description
Equals(Object)

Returnerar ett värde som anger om den här instansen är lika med ett angivet objekt.

(Ärvd från Attribute)
GetHashCode()

Returnerar hash-koden för den här instansen.

(Ärvd från Attribute)
GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
IsDefaultAttribute()

När den åsidosättas i en härledd klass anger du om värdet för den här instansen är standardvärdet för den härledda klassen.

(Ärvd från Attribute)
Match(Object)

När den åsidosätts i en härledd klass returneras ett värde som anger om den här instansen är lika med ett angivet objekt.

(Ärvd från Attribute)
MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
ToString()

Returnerar en sträng som representerar det aktuella objektet.

(Ärvd från Object)

Explicita gränssnittsimplementeringar

Name Description
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Mappar en uppsättning namn till en motsvarande uppsättning av sändningsidentifierare.

(Ärvd från Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Hämtar typinformationen för ett objekt, som kan användas för att hämta typinformationen för ett gränssnitt.

(Ärvd från Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Hämtar antalet typinformationsgränssnitt som ett objekt tillhandahåller (antingen 0 eller 1).

(Ärvd från Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Ger åtkomst till egenskaper och metoder som exponeras av ett objekt.

(Ärvd från Attribute)

Gäller för