OperationContractAttribute.IsOneWay Egenskap

Definition

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

public:
 property bool IsOneWay { bool get(); void set(bool value); };
public bool IsOneWay { get; set; }
member this.IsOneWay : bool with get, set
Public Property IsOneWay As Boolean

Egenskapsvärde

trueom den här metoden tar emot ett meddelande om begäran och inte returnerar något svarsmeddelande. annars . false Standardvärdet är false.

Exempel

Följande exempel är en tjänst som implementerar ett tjänstkontrakt som anger tre åtgärder. Två av metoderna implementerar dubbelriktade åtgärder som returnerar underliggande svarsmeddelanden till anroparen oavsett vilket returvärde som är. Den tredje metoden implementerar en åtgärd som tar emot ett anrop (ett underliggande inkommande meddelande) men som inte returnerar något underliggande svarsmeddelande.

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

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

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

Kommentarer

Använd egenskapen IsOneWay för att ange att en åtgärd inte returnerar något svarsmeddelande. Den här typen av åtgärd är användbar för meddelanden eller händelseliknande kommunikation, särskilt i dubbelriktad kommunikation. Utan att vänta på ett underliggande svarsmeddelande har anropare av enkelriktade åtgärder inget direkt sätt att identifiera ett fel vid bearbetning av begärandemeddelandet. (Tjänstprogram som använder tillförlitliga kanaler och enkelriktade åtgärder kan identifiera ett meddelandeleveransfel på kanalnivå. Mer information finns i Översikt över tillförlitliga sessioner.)

I duplex-program (eller dubbelriktade) tjänstorienterade program där klienten och servern kommunicerar med varandra oberoende av varandra kan en klientkanal använda IsOneWay egenskapen på sina metoder för att indikera att tjänsten kan göra enkelriktade anrop till klienten som klienten kan behandla som händelser. Inget returanrop eller meddelande genereras eftersom tjänsten inte förväntar sig något svarsmeddelande.

Om egenskapen IsOneWay är inställd på false (standard) resulterar även metoder som returnerar void ett svarsmeddelande. 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 infrastrukturen skicka SOAP-fel tillbaka till klienten.) Inställningen IsOneWay till true är det enda sättet att avbryta skapandet och sändningen av ett svarsmeddelande.

Envägsmetoder får inte returnera ett värde eller ha ref eller out parametrar. Annars genereras ett System.InvalidOperationException undantag.

Att ange att en åtgärd är en enkelriktad åtgärd innebär bara att det inte finns något svarsmeddelande. Det går att blockera om det inte går att upprätta en anslutning eller om det utgående meddelandet är mycket stort, eller om tjänsten inte kan läsa inkommande information tillräckligt snabbt. Om en klient kräver ett icke-blockerande anrop genererar du AsyncPattern åtgärder. För mer information, se One-Way Services och Åtkomst till tjänster med en WCF-klient.

Gäller för