OperationBehaviorAttribute Classe

Définition

Spécifie le comportement d'exécution local d'une méthode de service.Specifies the local execution behavior of a service method.

public ref class OperationBehaviorAttribute sealed : Attribute, System::ServiceModel::Description::IOperationBehavior
[System.AttributeUsage(System.AttributeTargets.Method)]
public sealed class OperationBehaviorAttribute : Attribute, System.ServiceModel.Description.IOperationBehavior
type OperationBehaviorAttribute = class
    inherit Attribute
    interface IOperationBehavior
Public NotInheritable Class OperationBehaviorAttribute
Inherits Attribute
Implements IOperationBehavior
Héritage
OperationBehaviorAttribute
Attributs
Implémente

Exemples

L’exemple de code suivant montre une opération qui s’exécute dans une transaction distribuée obligatoire.The following code example shows an operation that executes within a mandatory distributed transaction. La propriété TransactionScopeRequired indique que la méthode s'exécute sous la transaction de l'appelant, tandis que la propriété TransactionAutoComplete indique qu'en l'absence d'exception non gérée, la transaction est automatiquement validée.The TransactionScopeRequired property indicates that the method executes under the caller's transaction and the TransactionAutoComplete property indicates that if no unhandled exceptions occur, the transaction commits automatically. Si une exception non gérée se produit, la transaction est abandonnée.If an unhandled exception does occur, the transaction is aborted.

using System;
using System.ServiceModel;
using System.Transactions;

namespace Microsoft.WCF.Documentation
{
  [ServiceContract(Namespace="http://microsoft.wcf.documentation", SessionMode=SessionMode.Required)]
  public interface IBehaviorService
  {
    [OperationContract]
    string TxWork(string message);
  }

  // Note: To use the TransactionIsolationLevel property, you 
  // must add a reference to the System.Transactions.dll assembly.
  /* The following service implementation:
   *   -- Processes messages on one thread at a time
   *   -- Creates one service object per session
   *   -- Releases the service object when the transaction commits
   */
  [ServiceBehavior(
    ConcurrencyMode=ConcurrencyMode.Single,
    InstanceContextMode=InstanceContextMode.PerSession,
    ReleaseServiceInstanceOnTransactionComplete=true
  )]
  public class BehaviorService : IBehaviorService, IDisposable
  {
    Guid myID;

    public BehaviorService()
    {
      myID = Guid.NewGuid();
      Console.WriteLine(
        "Object "
        + myID.ToString()
        + " created.");
    }

    /*
     * The following operation-level behaviors are specified:
     *   -- Always executes under a transaction scope.
     *   -- The transaction scope is completed when the operation terminates 
     *       without an unhandled exception.
     */
    [OperationBehavior(
      TransactionAutoComplete = true,
      TransactionScopeRequired = true
    )]
    [TransactionFlow(TransactionFlowOption.Mandatory)]
    public string TxWork(string message)
    {
      // Do some transactable work.
      Console.WriteLine("TxWork called with: " + message);
      // Display transaction information.

      TransactionInformation info = Transaction.Current.TransactionInformation;
      Console.WriteLine("The distributed tx ID: {0}.", info.DistributedIdentifier);
      Console.WriteLine("The tx status: {0}.", info.Status);
      return String.Format("Hello. This was object {0}.",myID.ToString()) ;
    }

    public void Dispose()
    {
      Console.WriteLine(
        "Service "
        + myID.ToString()
        + " is being recycled."
      );
    }
  }
}
Imports System.ServiceModel
Imports System.Transactions

Namespace Microsoft.WCF.Documentation
  <ServiceContract(Namespace:="http://microsoft.wcf.documentation", SessionMode:=SessionMode.Required)> _
  Public Interface IBehaviorService
    <OperationContract> _
    Function TxWork(ByVal message As String) As String
  End Interface

    ' Note: To use the TransactionIsolationLevel property, you 
    ' must add a reference to the System.Transactions.dll assembly.
    ' The following service implementation:
    '   *   -- Processes messages on one thread at a time
    '   *   -- Creates one service object per session
    '   *   -- Releases the service object when the transaction commits

    <ServiceBehavior(ConcurrencyMode:=ConcurrencyMode.Single, InstanceContextMode:=InstanceContextMode.PerSession, _
                     ReleaseServiceInstanceOnTransactionComplete:=True)> _
    Public Class BehaviorService
        Implements IBehaviorService, IDisposable
        Private myID As Guid

        Public Sub New()
            myID = Guid.NewGuid()
            Console.WriteLine("Object " & myID.ToString() & " created.")
        End Sub

        '    
        '     * The following operation-level behaviors are specified:
        '     *   -- Always executes under a transaction scope.
        '     *   -- The transaction scope is completed when the operation terminates 
        '     *       without an unhandled exception.
        '     
        <OperationBehavior(TransactionAutoComplete:=True, TransactionScopeRequired:=True), _
        TransactionFlow(TransactionFlowOption.Mandatory)> _
        Public Function TxWork(ByVal message As String) As String Implements IBehaviorService.TxWork
            ' Do some transactable work.
            Console.WriteLine("TxWork called with: " & message)
            ' Display transaction information.

            Dim info As TransactionInformation = Transaction.Current.TransactionInformation
            Console.WriteLine("The distributed tx ID: {0}.", info.DistributedIdentifier)
            Console.WriteLine("The tx status: {0}.", info.Status)
            Return String.Format("Hello. This was object {0}.", myID.ToString())
        End Function

        Public Sub Dispose() Implements IDisposable.Dispose
            Console.WriteLine("Service " & myID.ToString() & " is being recycled.")
        End Sub
    End Class
End Namespace

Remarques

Utilisez l'attribut OperationBehaviorAttribute pour indiquer le comportement d'exécution spécifique de l'opération lors de son exécution.Use the OperationBehaviorAttribute attribute to indicate what operation-specific execution behavior the operation has when executed. (Pour spécifier le comportement d'exécution au niveau du service, utilisez l'attribut ServiceBehaviorAttribute.)(To specify execution behavior at the service level, use the ServiceBehaviorAttribute attribute.)

Notes

Vous pouvez également utiliser OperationBehaviorAttribute pour configurer une opération de contrat de rappel dans une application cliente duplex.You can also use OperationBehaviorAttribute to configure a callback contract operation in a duplex client application. Lorsque vous l'utilisez dans le cadre d'une opération de rappel, la propriété ReleaseInstanceMode doit avoir la valeur None, sinon une exception InvalidOperationException est levée au moment de l'exécution.When used on a callback operation, the ReleaseInstanceMode property must be None or an InvalidOperationException exception is thrown at runtime.

L' OperationBehaviorAttribute attribut est une fonctionnalité du modèle de programmation Windows Communication Foundation (WCF) qui active les fonctionnalités courantes que les développeurs doivent implémenter eux-mêmes.The OperationBehaviorAttribute attribute is a Windows Communication Foundation (WCF) programming model feature that enables common features that developers otherwise must implement themselves.

  • La propriété AutoDisposeParameters contrôle si les objets de paramètre transférés à une opération sont supprimés au terme de l'opération.The AutoDisposeParameters property controls whether parameter objects passed to an operation are disposed when the operation completes.

  • La propriété TransactionAutoComplete spécifie si la transaction dans laquelle la méthode s'exécute est automatiquement validée si aucune exception non gérée n'est levée.The TransactionAutoComplete property specifies whether the transaction in which the method executes is automatically committed if no unhandled exceptions occur.

  • La propriété TransactionScopeRequired spécifie si une méthode doit s'exécuter au sein d'une transaction.The TransactionScopeRequired property specifies whether a method must execute within a transaction.

  • La propriété Impersonation spécifie si l'opération de service peut, doit ou ne peut pas emprunter l'identité de l'appelant.The Impersonation property specifies whether the service operation can, must, or cannot impersonate the caller's identity.

  • La propriété ReleaseInstanceMode spécifie à quel moment du processus d'appel de la méthode les objets de service sont recyclés.The ReleaseInstanceMode property specifies when service objects are recycled during the method invocation process.

Constructeurs

OperationBehaviorAttribute()

Initialise une nouvelle instance de la classe OperationBehaviorAttribute.Initializes a new instance of the OperationBehaviorAttribute class.

Propriétés

AutoDisposeParameters

Obtient ou définit une valeur qui indique si les paramètres doivent être automatiquement supprimés.Gets or sets a value that indicates whether parameters are to be automatically disposed.

Impersonation

Obtient ou définit une valeur qui indique le niveau d'emprunt de l'identité de l'appelant pris en charge par l'opération.Gets or sets a value that indicates the level of caller impersonation that the operation supports.

ReleaseInstanceMode

Obtient ou définit une valeur qui indique quand recycler l'objet de service au cours d'un appel d'opération.Gets or sets a value that indicates when in the course of an operation invocation to recycle the service object.

TransactionAutoComplete

Obtient ou définit une valeur qui indique si l’étendue de la transaction actuelle doit être automatiquement exécutée lorsqu’aucune exception non gérée ne se produit.Gets or sets a value that indicates whether to automatically complete the current transaction scope if no unhandled exceptions occur.

TransactionScopeRequired

Obtient ou définit une valeur qui indique si la méthode requiert une étendue de transaction pour son exécution.Gets or sets a value that indicates whether the method requires a transaction scope for its execution.

TypeId

Lors de l'implémentation dans une classe dérivée, obtient un identificateur unique pour l'objet Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Hérité de Attribute)

Méthodes

Equals(Object)

Retourne une valeur qui indique si cette instance est égale à un objet spécifié.Returns a value that indicates whether this instance is equal to a specified object.

(Hérité de Attribute)
GetHashCode()

Retourne le code de hachage de cette instance.Returns the hash code for this instance.

(Hérité de Attribute)
GetType()

Obtient le Type de l'instance actuelle.Gets the Type of the current instance.

(Hérité de Object)
IsDefaultAttribute()

En cas de substitution dans une classe dérivée, indique si la valeur de cette instance est la valeur par défaut pour la classe dérivée.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Hérité de Attribute)
Match(Object)

En cas de substitution dans une classe dérivée, retourne une valeur indiquant si cette instance équivaut à un objet spécifié.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Hérité de Attribute)
MemberwiseClone()

Crée une copie superficielle du Object actuel.Creates a shallow copy of the current Object.

(Hérité de Object)
ToString()

Retourne une chaîne qui représente l'objet en cours.Returns a string that represents the current object.

(Hérité de Object)

Implémentations d’interfaces explicites

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

Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch.Maps a set of names to a corresponding set of dispatch identifiers.

(Hérité de Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Récupère les informations de type pour un objet, qui peuvent être utilisées pour obtenir les informations de type d'une interface.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Hérité de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Hérité de Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fournit l'accès aux propriétés et aux méthodes exposées par un objet.Provides access to properties and methods exposed by an object.

(Hérité de Attribute)
IOperationBehavior.AddBindingParameters(OperationDescription, BindingParameterCollection)

Implémente la méthode AddBindingParameters(OperationDescription, BindingParameterCollection).Implements the AddBindingParameters(OperationDescription, BindingParameterCollection) method.

IOperationBehavior.ApplyClientBehavior(OperationDescription, ClientOperation)

Implémente le comportement de l'opération côté client.Implements the client operation behavior.

IOperationBehavior.ApplyDispatchBehavior(OperationDescription, DispatchOperation)

Implémente le comportement de l'opération côté service.Implements the service operation behavior.

IOperationBehavior.Validate(OperationDescription)

Implémente le comportement de validation.Implements the validation behavior.

S’applique à