ServiceBehaviorAttribute Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Anger det interna körningsbeteendet för en tjänstkontraktsimplementering.
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
- Arv
- Attribut
- Implementeringar
Exempel
I följande kodexempel visas ServiceBehaviorAttribute egenskaperna. Klassen BehaviorService använder attributet ServiceBehaviorAttribute för att indikera att:
Tjänstobjektet återvinns när transaktionen slutförs.
Det finns ett tjänstobjekt för varje session.
Tjänsten är enkeltrådad och stöder inte återaktiveringsanrop.
På åtgärdsnivå OperationBehaviorAttribute anger dessutom värdena att TxWork metoden automatiskt registrerar flödestransaktioner eller skapar en ny transaktion för att utföra arbetet, och att transaktionen utförs automatiskt om ett ohanterat undantag inte inträffar.
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
Den underliggande bindningen måste ha stöd för flödestransaktioner för att följande kodexempel ska kunna köras korrekt. Om du vill stödja flödade transaktioner med hjälp av WSHttpBindinganger du TransactionFlow till exempel egenskapen i true kod eller i en programkonfigurationsfil. Följande kodexempel visar konfigurationsfilen för föregående exempel.
<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>
Kommentarer
ServiceBehaviorAttribute Använd attributet för en tjänstimplementering för att ange körningsbeteende för hela tjänsten. (Om du vill ange körningsbeteende på metodnivå använder du attributet OperationBehaviorAttribute .) Det här attributet kan endast tillämpas på tjänstimplementeringar. Arbetsexempel finns i Exempel på tjänst: Beteenden.
ServiceBehaviorAttribute egenskaper är en Windows Communication Foundation (WCF) programmeringsmodellfunktion som gör det möjligt för vanliga funktioner som utvecklare annars måste implementera. Mer information om dessa och andra beteenden finns i Ange tjänst Run-Time beteende. Mer information om de underliggande körningsegenskaperna som några av följande egenskaper har angett finns i Utöka ServiceHost och Service Model Layer.
Egenskapen AddressFilterMode anger vilken typ av filter som dispatcher-systemet använder för att hitta slutpunkten som hanterar begäranden.
Egenskapen AutomaticSessionShutdown stänger automatiskt sessionen när kanalen stängs och tjänsten har slutfört bearbetningen av eventuella återstående meddelanden.
Egenskapen ConcurrencyMode styr den interna trådningsmodellen, vilket möjliggör stöd för reentrant- eller flertrådade tjänster.
Egenskapen ConfigurationName används för att deklarera ett namn som ska användas i
nameelementets<service>attribut i en konfigurationsfil.Egenskapen IgnoreExtensionDataObject gör att körningstiden kan ignorera extra serialiseringsinformation som inte krävs för att bearbeta meddelandet.
Egenskapen IncludeExceptionDetailInFaults anger om ohanterade undantag i en tjänst returneras som SOAP-fel. Detta är endast i felsökningssyfte.
Egenskapen InstanceContextMode anger om och när tjänster och deras tjänstobjekt ska återvinnas under ett utbyte med en klient.
Egenskapen MaxItemsInObjectGraph som ska begränsa antalet objekt i ett objektdiagram som serialiseras.
Egenskaperna Name och Namespace styr namn och namnrymd för WSDL-uttrycket för tjänstelementet.
Egenskapen ReleaseServiceInstanceOnTransactionComplete anger om tjänstobjektet återvinns när en transaktion slutförs.
Egenskapen TransactionAutoCompleteOnSessionClose anger om utestående transaktioner slutförs när sessionen stängs.
Egenskapen TransactionIsolationLevel anger den transaktionsisoleringsnivå som kontraktet stöder.
Egenskapen TransactionTimeout anger den tidsperiod inom vilken en transaktion måste slutföras eller så avbryts den.
Egenskapen UseSynchronizationContext anger om inkommande metodanrop ska synkroniseras automatiskt med användargränssnittstråden.
Egenskapen ValidateMustUnderstand informerar systemet om det ska bekräfta att SOAP-huvuden som har markerats som
MustUnderstandfaktiskt har förståtts.
Egenskapen IncludeExceptionDetailInFaults kan också anges med hjälp av en programkonfigurationsfil. Mer information finns i IncludeExceptionDetailInFaults.
Konstruktorer
| Name | Description |
|---|---|
| ServiceBehaviorAttribute() |
Initierar en ny instans av ServiceBehaviorAttribute klassen. |
Egenskaper
| Name | Description |
|---|---|
| AddressFilterMode |
Hämtar eller anger AddressFilterMode det som används av avsändaren för att dirigera inkommande meddelanden till rätt slutpunkt. |
| AutomaticSessionShutdown |
Anger om en session ska stängas automatiskt när en klient stänger en utdatasession. |
| ConcurrencyMode |
Hämtar eller anger om en tjänst stöder en tråd, flera trådar eller återaktiveringsanrop. |
| ConfigurationName |
Hämtar eller anger det värde som används för att hitta tjänstelementet i en programkonfigurationsfil. |
| EnsureOrderedDispatch |
Hämtar eller anger ett värde som anger om den tjänstorderade sändningen är säkerställd. |
| IgnoreExtensionDataObject |
Hämtar eller anger ett värde som anger om okända serialiseringsdata ska skickas till tråden. |
| IncludeExceptionDetailInFaults |
Hämtar eller anger ett värde som anger att allmänna ohanterade körningsfel ska konverteras till en FaultException<TDetail> typ ExceptionDetail och skickas som ett felmeddelande. Ange detta till |
| InstanceContextMode |
Hämtar eller anger det värde som anger när nya tjänstobjekt skapas. |
| MaxItemsInObjectGraph |
Hämtar eller anger det maximala antalet objekt som tillåts i ett serialiserat objekt. |
| Name |
Hämtar eller anger värdet för namnattributet i tjänstelementet i Web Services Description Language (WSDL). |
| Namespace |
Hämtar eller anger värdet för målnamnområdet för tjänsten i Web Services Description Language (WSDL). |
| ReleaseServiceInstanceOnTransactionComplete |
Hämtar eller anger ett värde som anger om tjänstobjektet släpps när den aktuella transaktionen slutförs. |
| TransactionAutoCompleteOnSessionClose |
Hämtar eller anger ett värde som anger om väntande transaktioner slutförs när den aktuella sessionen stängs utan fel. |
| TransactionIsolationLevel |
Anger transaktionsisoleringsnivån för nya transaktioner som skapats i tjänsten och inkommande transaktioner som flödat från en klient. |
| TransactionTimeout |
Hämtar eller anger den period inom vilken en transaktion måste slutföras. |
| 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) |
| UseSynchronizationContext |
Hämtar eller anger ett värde som anger om du vill använda den aktuella synkroniseringskontexten för att välja körningstråden. |
| ValidateMustUnderstand |
Hämtar eller anger ett värde som anger om systemet eller programmet framtvingar SOAP-sidhuvudbearbetning |
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) |
| GetWellKnownSingleton() |
Hämtar ett objekt som implementerar tjänsten och som används som singleton-instans av tjänsten, eller |
| 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) |
| SetWellKnownSingleton(Object) |
Anger ett objekt som implementerar tjänsten och som används som singleton-instans av tjänsten. |
| ShouldSerializeConfigurationName() |
Returnerar ett värde som anger om egenskapen ConfigurationName har ändrats från standardvärdet och ska serialiseras. |
| ShouldSerializeReleaseServiceInstanceOnTransactionComplete() |
Returnerar ett värde som anger om egenskapen ReleaseServiceInstanceOnTransactionComplete har ändrats från standardvärdet och ska serialiseras. |
| ShouldSerializeTransactionAutoCompleteOnSessionClose() |
Returnerar ett värde som anger om egenskapen TransactionAutoCompleteOnSessionClose har ändrats från standardvärdet och ska serialiseras. |
| ShouldSerializeTransactionIsolationLevel() |
Returnerar ett värde som anger om egenskapen TransactionIsolationLevel har ändrats från standardvärdet och ska serialiseras. |
| ShouldSerializeTransactionTimeout() |
Returnerar ett värde som anger om egenskapen TransactionTimeout har ändrats från standardvärdet och ska serialiseras. |
| 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) |
| IServiceBehavior.AddBindingParameters(ServiceDescription, ServiceHostBase, Collection<ServiceEndpoint>, BindingParameterCollection) |
Skickar anpassade dataobjekt till bindningar som stöder beteendeegenskaperna. |
| IServiceBehavior.ApplyDispatchBehavior(ServiceDescription, ServiceHostBase) |
Anpassar körningstiden för tjänsten för att stödja beteendeegenskaperna. |
| IServiceBehavior.Validate(ServiceDescription, ServiceHostBase) |
Bekräftar att tjänstbeskrivningen och tjänstvärden kan stödja beteendet. |