ServiceBehaviorAttribute Sınıf

Tanım

Hizmet sözleşmesi uygulamasının iç yürütme davranışını belirtir.

public ref class ServiceBehaviorAttribute sealed : Attribute, System::ServiceModel::Description::IServiceBehavior
[System.AttributeUsage(System.AttributeTargets.Class)]
public sealed class ServiceBehaviorAttribute : Attribute, System.ServiceModel.Description.IServiceBehavior
[<System.AttributeUsage(System.AttributeTargets.Class)>]
type ServiceBehaviorAttribute = class
    inherit Attribute
    interface IServiceBehavior
Public NotInheritable Class ServiceBehaviorAttribute
Inherits Attribute
Implements IServiceBehavior
Devralma
ServiceBehaviorAttribute
Öznitelikler
Uygulamalar

Örnekler

Aşağıdaki kod örneği özellikleri gösterir ServiceBehaviorAttribute . sınıfı, BehaviorService aşağıdakileri belirtmek için özniteliğini ServiceBehaviorAttribute kullanır:

  • İşlem tamamlandığında hizmet nesnesi geri dönüştürülür.

  • Her oturum için bir hizmet nesnesi vardır.

  • Hizmet tek iş parçacıklıdır ve yeniden gelen çağrıları desteklemez.

Ayrıca, işlem düzeyinde değerler yöntemin OperationBehaviorAttributeTxWork akışlı işlemlere otomatik olarak listelendiğini veya işi yapmak için yeni bir işlem oluşturduğunu ve işlenmeyen bir özel durum oluşmazsa işlemin otomatik olarak işlendiğini gösterir.

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:
     *   -- The executing transaction is committed when
     *        the operation completes without an
     *        unhandled exception
     *   -- Always executes under a flowed transaction.
     */
    [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:
        '     *   -- The executing transaction is committed when
        '     *        the operation completes without an 
        '     *        unhandled exception
        '     *   -- Always executes under a flowed transaction.
        '     
        <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

Aşağıdaki kod örneğinin düzgün yürütülmesi için temel bağlamanın akışlı işlemleri desteklemesi gerekir. kullanarak akışlı işlemleri WSHttpBindingdesteklemek için örneğin, özelliğini true kodda veya uygulama yapılandırma dosyasında olarak ayarlayınTransactionFlow. Aşağıdaki kod örneği, önceki örneğin yapılandırma dosyasını gösterir.

<configuration>
  <system.serviceModel>
    <services>
      <service  
        name="Microsoft.WCF.Documentation.BehaviorService" 
        behaviorConfiguration="metadataAndDebugEnabled"
      >
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8080/SampleService"/>
          </baseAddresses>
        </host>
        <!--
          Note:
            This example code uses the WSHttpBinding to support transactions using the 
            WS-AtomicTransactions (WS-AT) protocol. WSHttpBinding is configured to use the  
            protocol, but the protocol is not enabled on some computers. Use the xws_reg -wsat+ 
            command to enable the WS-AtomicTransactions protocol in the MSDTC service.          
          -->
        <endpoint 
           contract="Microsoft.WCF.Documentation.IBehaviorService"
           binding="wsHttpBinding"
           bindingConfiguration="wsHttpBindingWithTXFlow"
           address="http://localhost:8080/BehaviorService"
          />
        <endpoint 
           contract="Microsoft.WCF.Documentation.IBehaviorService"
           binding="netTcpBinding"
           bindingConfiguration="netTcpBindingWithTXFlow"
           address="net.tcp://localhost:8081/BehaviorService"
          />
        <endpoint
          address="mex"
          binding="mexHttpBinding"
          contract="IMetadataExchange"
        />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="metadataAndDebugEnabled">
          <serviceDebug
            includeExceptionDetailInFaults="true"
          />
          <serviceMetadata
            httpGetEnabled="true"
            httpGetUrl=""
          />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <!-- binding configuration - configures a WSHttpBinding to require transaction flow -->
    <bindings>
      <wsHttpBinding>
        <binding name="wsHttpBindingWithTXFlow" transactionFlow="true" />
      </wsHttpBinding>
      <netTcpBinding>
        <binding name="netTcpBindingWithTXFlow" transactionFlow="true" />
      </netTcpBinding>
    </bindings>
  </system.serviceModel>
</configuration>

Açıklamalar

ServiceBehaviorAttribute Hizmet genelinde yürütme davranışını belirtmek için özniteliğini bir hizmet uygulamasına uygulayın. (Yöntem düzeyinde yürütme davranışını belirtmek için özniteliğini OperationBehaviorAttribute kullanın.) Bu öznitelik yalnızca hizmet uygulamalarına uygulanabilir. Çalışma örnekleri için bkz . Hizmet: Davranış Örnekleri.

ServiceBehaviorAttribute özellikler, geliştiricilerin başka türlü uygulamak zorunda olduğu ortak özellikleri etkinleştiren bir Windows Communication Foundation (WCF) programlama modeli özelliğidir. Bunlar ve diğer davranışlar hakkında daha fazla bilgi için bkz. Hizmet Run-Time Davranışını Belirtme. Aşağıdaki özelliklerden bazılarının ayarlandığı temel çalışma zamanı özellikleri hakkında daha fazla bilgi için bkz. ServiceHost'u ve Hizmet Modeli Katmanını Genişletme.

  • özelliği, AddressFilterMode dağıtıcı sisteminin istekleri işleyen uç noktayı bulmak için kullandığı filtre türünü belirtir.

  • Kanal AutomaticSessionShutdown kapatıldığında ve hizmet kalan iletileri işlemeyi bitirdiğinde özelliği oturumu otomatik olarak kapatır.

  • ConcurrencyMode özelliği, iç iş parçacığı modelini denetler ve yeniden girilen veya çok iş parçacıklı hizmetler için destek sağlar.

  • ConfigurationName özelliği, yapılandırma dosyasındaki öğesinin name<service> özniteliğinde kullanılacak bir ad bildirmek için kullanılır.

  • IgnoreExtensionDataObject özelliği, çalışma zamanının iletiyi işlemek için gerekli olmayan ek serileştirme bilgilerini yoksaymasına olanak tanır.

  • özelliği, IncludeExceptionDetailInFaults bir hizmetteki işlenmeyen özel durumların SOAP hataları olarak döndürülip döndürülmeyeceğini belirtir. Bu yalnızca hata ayıklama amaçlıdır.

  • özelliği, InstanceContextMode bir istemciyle yapılan bir değişim sırasında hizmetlerin ve hizmet nesnelerinin geri dönüştürülip geri dönüştürülmeyeceğini ve ne zaman geri dönüştürülmeyeceğini belirtir.

  • Bir MaxItemsInObjectGraph nesne grafında seri hale getirilen öğe sayısını sınırlama özelliği.

  • Name ve Namespace özellikleri, hizmet öğesinin WSDL ifadesinin adını ve ad alanını denetler.

  • özelliği, ReleaseServiceInstanceOnTransactionComplete bir işlem tamamlandığında hizmet nesnesinin geri dönüştürülip dönüştürülmeyeceğini belirtir.

  • özelliği, TransactionAutoCompleteOnSessionClose bekleyen işlemlerin oturum kapatıldığında tamamlanıp tamamlanmayacağını belirtir.

  • özelliği, TransactionIsolationLevel sözleşmenin desteklediği işlem yalıtım düzeyini belirtir.

  • TransactionTimeout özelliği, bir işlemin tamamlanması gereken veya durdurulması gereken süreyi belirtir.

  • özelliği, UseSynchronizationContext gelen yöntem çağrılarının kullanıcı arabirimi iş parçacığıyla otomatik olarak eşitlenip eşitlenmeyeceğini gösterir.

  • ValidateMustUnderstand özelliği, aslında olarak işaretlenmiş MustUnderstand SOAP üst bilgilerinin anlaşıldığını onaylaması gerekip gerekmediğini sisteme bildirir.

IncludeExceptionDetailInFaults Özelliği bir uygulama yapılandırma dosyası kullanılarak da ayarlanabilir. Ayrıntılar için bkz. IncludeExceptionDetailInFaults.

Oluşturucular

ServiceBehaviorAttribute()

ServiceBehaviorAttribute sınıfının yeni bir örneğini başlatır.

Özellikler

AddressFilterMode

Dağıtıcı tarafından gelen iletileri doğru uç noktaya yönlendirmek için kullanılan öğesini alır veya ayarlar AddressFilterMode .

AutomaticSessionShutdown

İstemci bir çıkış oturumını kapattığında oturumun otomatik olarak kapatılıp kapatılmayacağını belirtir.

ConcurrencyMode

Bir hizmetin bir iş parçacığını, birden çok iş parçacığını veya yeniden giriş çağrılarını destekleyip desteklemediğini alır veya ayarlar.

ConfigurationName

Bir uygulama yapılandırma dosyasında hizmet öğesini bulmak için kullanılan değeri alır veya ayarlar.

EnsureOrderedDispatch

Hizmetin sipariş edilen gönderimin sağlanıp sağlanmadığını belirten bir değer alır veya ayarlar.

IgnoreExtensionDataObject

Bilinmeyen serileştirme verilerinin kabloya gönderilip gönderilmeymeyeceğini belirten bir değer alır veya ayarlar.

IncludeExceptionDetailInFaults

Genel işlenmeyen yürütme özel durumlarının bir türe ExceptionDetail dönüştürülmesini ve hata iletisi olarak gönderilmesini belirten bir FaultException<TDetail> değeri alır veya ayarlar. Bir hizmette sorun gidermek için true bunu yalnızca geliştirme sırasında olarak ayarlayın.

InstanceContextMode

Yeni hizmet nesnelerinin ne zaman oluşturulduğunu gösteren değeri alır veya ayarlar.

MaxItemsInObjectGraph

Serileştirilmiş bir nesnede izin verilen en fazla öğe sayısını alır veya ayarlar.

Name

Web Hizmetleri Açıklama Dili'ndeki (WSDL) hizmet öğesindeki name özniteliğinin değerini alır veya ayarlar.

Namespace

Web Hizmetleri Açıklama Dili'nde (WSDL) hizmet için hedef ad alanının değerini alır veya ayarlar.

ReleaseServiceInstanceOnTransactionComplete

Geçerli işlem tamamlandığında hizmet nesnesinin serbest bırakılıp bırakılmayacağını belirten bir değer alır veya ayarlar.

TransactionAutoCompleteOnSessionClose

Geçerli oturum hatasız kapatıldığında bekleyen işlemlerin tamamlanıp tamamlanmayacağını belirten bir değer alır veya ayarlar.

TransactionIsolationLevel

Hizmet içinde oluşturulan yeni işlemler ve istemciden akan gelen işlemler için işlem yalıtım düzeyini belirtir.

TransactionTimeout

İşlemin tamamlanması gereken dönemi alır veya ayarlar.

TypeId

Türetilmiş bir sınıfta uygulandığında, bu Attributeiçin benzersiz bir tanımlayıcı alır.

(Devralındığı yer: Attribute)
UseSynchronizationContext

Yürütme iş parçacığını seçmek için geçerli eşitleme bağlamının kullanılıp kullanılmayacağını belirten bir değer alır veya ayarlar.

ValidateMustUnderstand

Sistemin veya uygulamanın SOAP MustUnderstand üst bilgi işlemesini zorunlu kılıp zorlamadığını belirten bir değer alır veya ayarlar.

Yöntemler

Equals(Object)

Bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değeri döndürür.

(Devralındığı yer: Attribute)
GetHashCode()

Bu örneğe ilişkin karma kodu döndürür.

(Devralındığı yer: Attribute)
GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
GetWellKnownSingleton()

Hizmeti uygulayan ve hizmetin tekil örneği olarak kullanılan veya null tekil bir örnek yoksa bir nesnesi alır.

IsDefaultAttribute()

Türetilmiş bir sınıfta geçersiz kılındığında, bu örneğin değerinin türetilmiş sınıf için varsayılan değer olup olmadığını gösterir.

(Devralındığı yer: Attribute)
Match(Object)

Türetilmiş bir sınıfta geçersiz kılındığında, bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değer döndürür.

(Devralındığı yer: Attribute)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
SetWellKnownSingleton(Object)

Hizmeti uygulayan ve hizmetin tek örneği olarak kullanılan bir nesneyi belirtir.

ShouldSerializeConfigurationName()

Özelliğin varsayılan değerinden ConfigurationName değiştirilip değiştirilmediğini ve seri hale getirilip getirilmeyeceğini belirten bir değer döndürür.

ShouldSerializeReleaseServiceInstanceOnTransactionComplete()

Özelliğin varsayılan değerinden ReleaseServiceInstanceOnTransactionComplete değiştirilip değiştirilmediğini ve seri hale getirilip getirilmeyeceğini belirten bir değer döndürür.

ShouldSerializeTransactionAutoCompleteOnSessionClose()

Özelliğin varsayılan değerinden TransactionAutoCompleteOnSessionClose değiştirilip değiştirilmediğini ve seri hale getirilip getirilmeyeceğini belirten bir değer döndürür.

ShouldSerializeTransactionIsolationLevel()

Özelliğin varsayılan değerinden TransactionIsolationLevel değiştirilip değiştirilmediğini ve seri hale getirilip getirilmeyeceğini belirten bir değer döndürür.

ShouldSerializeTransactionTimeout()

Özelliğin varsayılan değerinden TransactionTimeout değiştirilip değiştirilmediğini ve seri hale getirilip getirilmeyeceğini belirten bir değer döndürür.

ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)

Belirtik Arabirim Kullanımları

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

Bir ad kümesini karşılık gelen bir dağıtma tanımlayıcısı kümesine eşler.

(Devralındığı yer: Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Bir arabirimin tür bilgilerini almak için kullanılabilecek bir nesnenin tür bilgilerini alır.

(Devralındığı yer: Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Bir nesnenin sağladığı tür bilgisi arabirimlerinin sayısını alır (0 ya da 1).

(Devralındığı yer: Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Bir nesne tarafından sunulan özelliklere ve yöntemlere erişim sağlar.

(Devralındığı yer: Attribute)
IServiceBehavior.AddBindingParameters(ServiceDescription, ServiceHostBase, Collection<ServiceEndpoint>, BindingParameterCollection)

Özel veri nesnelerini davranış özelliklerini destekleyen bağlamalara geçirir.

IServiceBehavior.ApplyDispatchBehavior(ServiceDescription, ServiceHostBase)

Davranış özelliklerini desteklemek için hizmetin çalışma süresini özelleştirir.

IServiceBehavior.Validate(ServiceDescription, ServiceHostBase)

Hizmet açıklamasının ve hizmet ana bilgisayarının davranışı destekleyebilecek durumda olduğunu onaylar.

Şunlara uygulanır

Ayrıca bkz.