Standard-DienstverhaltenDefault Service Behavior

In diesem Beispiel wird veranschaulicht, wie Einstellungen für das Dienstverhalten konfiguriert werden können.This sample demonstrates how service behavior settings can be configured. Das Beispiel basiert auf der Einstieg, implementiert die ICalculator Dienstvertrag.The sample is based on the Getting Started, which implements the ICalculator service contract. In diesem Beispiel werden explizit Dienstverhaltensweisen und Vorgangsverhaltensweisen mit dem ServiceBehaviorAttribute-Attribut bzw. dem OperationBehaviorAttribute-Attribut definiert.This sample explicitly defines service behaviors and operation behaviors using the ServiceBehaviorAttribute and OperationBehaviorAttribute attributes. Sie können Verhaltensweisen in Konfigurationsdateien oder imperativ im Code konfigurieren, wie dieses Beispiel zeigt.You can configure behaviors in configuration files or imperatively in code (as this sample demonstrates).

In diesem Beispiel ist der Client eine Konsolenanwendung (.exe), und der Dienst wird von IIS (Internet Information Services, Internetinformationsdienste) gehostet.In this sample, the client is a console application (.exe) and the service is hosted by Internet Information Services (IIS).

Hinweis

Die Setupprozedur und die Buildanweisungen für dieses Beispiel befinden sich am Ende dieses Themas.The setup procedure and build instructions for this sample are located at the end of this topic.

Die Dienstklasse gibt Verhaltensweisen mit dem ServiceBehaviorAttribute und dem OperationBehaviorAttribute an, wie im folgenden Beispielcode dargestellt.The service class specifies behaviors with the ServiceBehaviorAttribute and the OperationBehaviorAttribute as shown in the following code sample. Alle angegebenen Werte sind Standardwerte.All values specified are the defaults.

[ServiceBehavior(  
    AutomaticSessionShutdown=true,  
    ConcurrencyMode=ConcurrencyMode.Single,  
    InstanceContextMode=InstanceContextMode.PerSession,  
    IncludeExceptionDetailInFaults=false,  
    UseSynchronizationContext=true,  
    ValidateMustUnderstand=true)]  
public class CalculatorService : ICalculator  
{  
    [OperationBehavior(  
        TransactionAutoComplete=true,  
        TransactionScopeRequired=false,  
        Impersonation=ImpersonationOption.NotAllowed)]  
    public double Add(double n1, double n2)  
    {  
        System.Threading.Thread.Sleep(1600);  
        return n1 + n2;  
    }  
    ...  
}  

Dienstverhaltensweisen werden mit dem ServiceBehaviorAttribute-Attribut angegeben.Service behaviors are specified with the ServiceBehaviorAttribute attribute. In der folgenden Tabelle werden einige dieser Verhaltensweisen beschrieben.The following table describes some of these behaviors.

DienstverhaltenService behavior BeschreibungDescription
AutomaticSessionShutdown Fährt eine Sitzung auf Anforderung des Clients automatisch herunter.Automatically shuts down a session at the client's request.
ConcurrencyMode Gibt den Parallelitätsmodus für jede Dienstinstanz an.Specifies the concurrency mode for each service instance.
InstanceContextMode Gibt den Instanzkontextmodus an.Specifies the instance context mode.
UseSynchronizationContext Bestimmt, ob der bereitgestellte Synchronisierungskontext (falls festgelegt) verwendet werden soll.Determines whether to use the provided synchronization context, if one is set. Verwenden Sie dies, wenn Sie kontrollieren möchten, ob in Windows Forms-Anwendungen ein WindowsFormsSynchronizationContext verwendet werden soll.Use this when you want to control whether to use a WindowsFormsSynchronizationContext in Windows Forms applications.
IncludeExceptionDetailInFaults Bestimmt, ob allgemeine unbehandelte Ausführungsausnahmen in eine Fault<string> konvertiert und als Fehlermeldung gesendet werden sollen.Determines whether general unhandled execution exceptions are to be converted into a Fault<string> and sent as a fault message.
TransactionIsolationLevel Gibt die Isolierungsebene für Transaktionen an.Specifies the isolation level for transactions.
ValidateMustUnderstand Legt fest, ob unerwartete Nachrichtenheader eine Fehlerbedingung auslösen.Determines whether unexpected message headers cause an error condition.

Vorgangsverhaltensweisen werden mit dem OperationBehaviorAttribute-Attribut angegeben.Operation behaviors are specified by using the OperationBehaviorAttribute attribute. In der folgenden Tabelle werden einige dieser Verhaltensweisen beschrieben.The following table describes some of these behaviors.

VorgangsverhaltenOperation Behavior BeschreibungDescription
TransactionAutoComplete Bestimmt, ob bei Abschluss eines Dienstvorgangs ein Commit für die aktuelle Transaktion ausgeführt wird.Determines whether service operation completion commits the current transaction.
TransactionScopeRequired Bestimmt, ob sich der Dienstvorgang in einem Clienttransaktionsfluss einträgt.Determines whether the service operation enlists in a client-flowed transaction.
Impersonation Bestimmt, ob der Dienstvorgang die Identität des Aufrufers annimmt.Determines whether the service operation impersonates the caller's identity.
ReleaseInstanceMode Bestimmt, ob Dienstinstanzen zu Beginn oder am Ende des Dienstvorgangsaufrufs wiederverwendet werden.Determines whether service instances are recycled at the start or end of the service operation call.

Wenn Sie das Beispiel ausführen, werden die Anforderungen und Antworten für den Vorgang im Clientkonsolenfenster angezeigt.When you run the sample, the operation requests and responses are displayed in the client console window. Die Verzögerung zwischen den Aufrufen resultiert von den in den Dienstvorgängen vorgenommenen Aufrufen von System.Threading.Thread.Sleep().The delay between the calls is the result of the calls to System.Threading.Thread.Sleep() made in the service operations. Diese Verhaltensweisen werden in den restlichen Verhaltensbeispielen ausführlicher erklärt.The rest of the behavior samples explain these behaviors in more detail. Drücken Sie im Clientfenster die EINGABETASTE, um den Client zu schließen.Press ENTER in the client window to shut down the client.

Add(100,15.99) = 115.99  
Subtract(145,76.54) = 68.46  
Multiply(9,81.25) = 731.25  
Divide(22,7) = 3.14285714285714  

Press <ENTER> to terminate client.  

So können Sie das Beispiel einrichten, erstellen und ausführenTo set up, build, and run the sample

  1. Stellen Sie sicher, dass Sie ausgeführt haben die Setupprozedur für die Windows Communication Foundation-Beispiele zum einmaligen.Ensure that you have performed the One-Time Setup Procedure for the Windows Communication Foundation Samples.

  2. Um die C#- oder Visual Basic .NET-Edition der Projektmappe zu erstellen, befolgen Sie die unter Building the Windows Communication Foundation Samplesaufgeführten Anweisungen.To build the C# or Visual Basic .NET edition of the solution, follow the instructions in Building the Windows Communication Foundation Samples.

  3. Um das Beispiel in einer einzelnen oder computerübergreifenden Konfiguration ausführen möchten, folgen Sie den Anweisungen Ausführen der Windows Communication Foundation-Beispiele.To run the sample in a single- or cross-machine configuration, follow the instructions in Running the Windows Communication Foundation Samples.

Wichtig

Die Beispiele sind möglicherweise bereits auf dem Computer installiert.The samples may already be installed on your machine. Suchen Sie nach dem folgenden Verzeichnis (Standardverzeichnis), bevor Sie fortfahren.Check for the following (default) directory before continuing.

<InstallDrive>:\WF_WCF_Samples

Wenn dieses Verzeichnis nicht vorhanden ist, rufen Sie Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 auf, um alle Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) - und WFWF -Beispiele herunterzuladen.If this directory does not exist, go to Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 to download all Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) and WFWF samples. Dieses Beispiel befindet sich im folgenden Verzeichnis.This sample is located in the following directory.

<InstallDrive>:\WF_WCF_Samples\WCF\Basic\Services\Behaviors\Default

Siehe auchSee Also