Vorgehensweise: Steuern der Dienstinstanzierung

Durch das Festlegen des Instanzmodus eines Dienstes können Sie angeben, wann ein System.ServiceModel.InstanceContext (und das zugeordnete benutzerdefinierte Dienstobjekt) erstellt wird. Mögliche Modi finden Sie in der InstanceContextMode-Enumeration. Weitere Informationen zu Verhalten finden Sie unter Konfigurieren und Erweitern der Laufzeit mit Verhalten. Ein Arbeitsbeispiel finden Sie unter Verhalten.

So steuern Sie die Lebensdauer der Dienstinstanz mit Code

  1. Fügen Sie das ServiceBehaviorAttribute der Dienstklasse hinzu.

  2. Legen Sie die InstanceContextMode-Eigenschaft auf einen der folgenden Werte fest: PerCall, PerSession oder Single.

    [ServiceBehaviorAttribute(InstanceContextMode = InstanceContextMode.PerCall)]
    
    <ServiceBehaviorAttribute(InstanceContextMode:=InstanceContextMode.PerCall)> _
    Public Class CalculatorService
    

Beispiel

Im folgenden Codebeispiel wird die InstanceContextMode-Eigenschaft des ServiceBehaviorAttribute-Attributs auf PerCall festgelegt.

// Define a service contract.
[ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples")]
public interface ICalculator
{
    [OperationContract]
    double Add(double n1, double n2);
    [OperationContract]
    double Subtract(double n1, double n2);
    [OperationContract]
    double Multiply(double n1, double n2);
    [OperationContract]
    double Divide(double n1, double n2);
}

// Service class which implements the service contract.
[ServiceBehaviorAttribute(InstanceContextMode = InstanceContextMode.PerCall)]
public class CalculatorService : ICalculator
{
    public double Add(double n1, double n2)
    {
        return n1 + n2;
    }

    public double Subtract(double n1, double n2)
    {
        return n1 - n2;
    }

    public double Multiply(double n1, double n2)
    {
        return n1 * n2;
    }

    public double Divide(double n1, double n2)
    {
        return n1 / n2;
    }
}
' Define a service contract.
<ServiceContract([Namespace]:="http://Microsoft.ServiceModel.Samples")> _
Public Interface ICalculator
    <OperationContract()> _
    Function Add(ByVal n1 As Double, ByVal n2 As Double) As Double
    <OperationContract()> _
    Function Subtract(ByVal n1 As Double, ByVal n2 As Double) As Double
    <OperationContract()> _
    Function Multiply(ByVal n1 As Double, ByVal n2 As Double) As Double
    <OperationContract()> _
    Function Divide(ByVal n1 As Double, ByVal n2 As Double) As Double
End Interface

' Service class which implements the service contract.
<ServiceBehaviorAttribute(InstanceContextMode:=InstanceContextMode.PerCall)> _
Public Class CalculatorService
    Implements ICalculator

    Public Function Add(ByVal n1 As Double, ByVal n2 As Double) As Double _
    Implements ICalculator.Add
        Return n1 + n2

    End Function


    Public Function Subtract(ByVal n1 As Double, ByVal n2 As Double) As Double _
    Implements ICalculator.Subtract
        Return n1 - n2
    End Function

    Public Function Multiply(ByVal n1 As Double, ByVal n2 As Double) As Double _
    Implements ICalculator.Multiply
        Return n1 * n2
    End Function

    Public Function Divide(ByVal n1 As Double, ByVal n2 As Double) As Double _
    Implements ICalculator.Divide
        Return n1 / n2
    End Function
End Class

Siehe auch