Sdílet prostřednictvím


OperationBehaviorAttribute Třída

Definice

Určuje chování místního spuštění metody služby.

public ref class OperationBehaviorAttribute sealed : Attribute, System::ServiceModel::Description::IOperationBehavior
[System.AttributeUsage(System.AttributeTargets.Method)]
public sealed class OperationBehaviorAttribute : Attribute, System.ServiceModel.Description.IOperationBehavior
[<System.AttributeUsage(System.AttributeTargets.Method)>]
type OperationBehaviorAttribute = class
    inherit Attribute
    interface IOperationBehavior
Public NotInheritable Class OperationBehaviorAttribute
Inherits Attribute
Implements IOperationBehavior
Dědičnost
OperationBehaviorAttribute
Atributy
Implementuje

Příklady

Následující příklad kódu ukazuje operaci, která se provádí v rámci povinné distribuované transakce. Vlastnost TransactionScopeRequired označuje, že metoda provádí pod volající transakce a TransactionAutoComplete vlastnost indikuje, že pokud nedojde k neošetřeným výjimkám, transakce se potvrdí automaticky. Pokud dojde k neošetřené výjimce, transakce je přerušena.

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

Poznámky

Pomocí atributu OperationBehaviorAttribute můžete určit, jaké chování provádění konkrétní operace má operace při spuštění. (Chcete-li určit chování spuštění na úrovni služby, použijte ServiceBehaviorAttribute atribut.)

Poznámka

Můžete také použít OperationBehaviorAttribute ke konfiguraci operace zpětného volání kontraktu v duplexní klientské aplikaci. Při použití při operaci ReleaseInstanceMode zpětného volání musí None být vlastnost nebo InvalidOperationException je vyvolán výjimka za běhu.

Atribut OperationBehaviorAttribute je funkce programovacího modelu Windows Communication Foundation (WCF), která umožňuje běžné funkce, které vývojáři jinak musí implementovat sami.

  • Vlastnost AutoDisposeParameters řídí, zda objekty parametrů předané operaci jsou uvolněny po dokončení operace.

  • Vlastnost TransactionAutoComplete určuje, zda transakce, ve které se metoda provádí, je automaticky potvrzena, pokud nedojde k neošetřeným výjimkám.

  • Vlastnost TransactionScopeRequired určuje, zda se metoda musí provést v rámci transakce.

  • Vlastnost Impersonation určuje, zda operace služby může, musí nebo nemůže zosobnit identitu volajícího.

  • Vlastnost ReleaseInstanceMode určuje, kdy se objekty služby recyklují během procesu vyvolání metody.

Konstruktory

OperationBehaviorAttribute()

Inicializuje novou instanci OperationBehaviorAttribute třídy.

Vlastnosti

AutoDisposeParameters

Získá nebo nastaví hodnotu, která označuje, zda mají být parametry automaticky odstraněny.

Impersonation

Získá nebo nastaví hodnotu, která označuje úroveň zosobnění volajícího, kterou operace podporuje.

ReleaseInstanceMode

Získá nebo nastaví hodnotu, která označuje, kdy v průběhu vyvolání operace recyklovat objekt služby.

TransactionAutoComplete

Získá nebo nastaví hodnotu, která označuje, zda se má automaticky dokončit aktuální obor transakce, pokud nedojde k neošetřeným výjimkám.

TransactionScopeRequired

Získá nebo nastaví hodnotu, která označuje, zda metoda vyžaduje obor transakce pro jeho spuštění.

TypeId

Při implementaci v odvozené třídě získá jedinečný identifikátor pro tento Attribute.

(Zděděno od Attribute)

Metody

Equals(Object)

Vrací hodnotu, která určuje, zda je tato instance rovna zadanému objektu.

(Zděděno od Attribute)
GetHashCode()

Vrátí hodnotu hash pro tuto instanci.

(Zděděno od Attribute)
GetType()

Type Získá aktuální instanci.

(Zděděno od Object)
IsDefaultAttribute()

Při přepsání v odvozené třídě určuje, zda hodnota této instance je výchozí hodnotou odvozené třídy.

(Zděděno od Attribute)
Match(Object)

Při přepsání v odvozené třídě vrátí hodnotu, která označuje, zda se tato instance rovná zadanému objektu.

(Zděděno od Attribute)
MemberwiseClone()

Vytvoří použádnou kopii aktuálního souboru Object.

(Zděděno od Object)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Explicitní implementace rozhraní

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

Mapuje sadu názvů na odpovídající sadu identifikátorů pro rozesílání.

(Zděděno od Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Načte informace o typu objektu, který lze použít k získání informací o typu rozhraní.

(Zděděno od Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Získá počet rozhraní typu informací, které objekt poskytuje (0 nebo 1).

(Zděděno od Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Poskytuje přístup k vlastnostem a metodám vystaveným objektem.

(Zděděno od Attribute)
IOperationBehavior.AddBindingParameters(OperationDescription, BindingParameterCollection)

Implementuje metodu AddBindingParameters(OperationDescription, BindingParameterCollection) .

IOperationBehavior.ApplyClientBehavior(OperationDescription, ClientOperation)

Implementuje chování operace klienta.

IOperationBehavior.ApplyDispatchBehavior(OperationDescription, DispatchOperation)

Implementuje chování operace služby.

IOperationBehavior.Validate(OperationDescription)

Implementuje chování ověřování.

Platí pro