OperationBehaviorAttribute.ReleaseInstanceMode Eigenschap

Definitie

Hiermee wordt een waarde opgehaald of ingesteld die aangeeft wanneer in de loop van een bewerking het serviceobject wordt aangeroepen.

public:
 property System::ServiceModel::ReleaseInstanceMode ReleaseInstanceMode { System::ServiceModel::ReleaseInstanceMode get(); void set(System::ServiceModel::ReleaseInstanceMode value); };
public System.ServiceModel.ReleaseInstanceMode ReleaseInstanceMode { get; set; }
member this.ReleaseInstanceMode : System.ServiceModel.ReleaseInstanceMode with get, set
Public Property ReleaseInstanceMode As ReleaseInstanceMode

Waarde van eigenschap

Een van de ReleaseInstanceMode waarden. De standaardwaarde is None.

Uitzonderingen

De waarde is geen van de ReleaseInstanceMode waarden.

Voorbeelden

De volgende voorbeeldcode toont het gebruik van ReleaseInstanceMode serviceobjecten voor en na een aanroep te recyclen.

class SampleService : ISampleService
{
  private Guid id;
  private string session;

  public SampleService()
  {
    id = Guid.NewGuid();
    session = OperationContext.Current.SessionId;
    Console.WriteLine("Object {0} has been created.", id);
    Console.WriteLine("For session {0}", session);
  }
  [OperationBehavior(
          ReleaseInstanceMode=ReleaseInstanceMode.BeforeAndAfterCall
  )]
  public string  SampleMethod(string msg)
  {
    Console.WriteLine("The caller said: \"{0}\"", msg);
    Console.WriteLine("For session {0}", OperationContext.Current.SessionId);
    return "The service greets you: " + msg;
  }

  ~SampleService()
  {
    Console.WriteLine("Object {0} has been destroyed.", id);
    Console.WriteLine("For session {0}", session);
  }
}
Friend Class SampleService
    Implements ISampleService
  Private id As Guid
  Private session As String

  Public Sub New()
    id = Guid.NewGuid()
    session = OperationContext.Current.SessionId
    Console.WriteLine("Object {0} has been created.", id)
    Console.WriteLine("For session {0}", session)
  End Sub
  <OperationBehavior(ReleaseInstanceMode:=ReleaseInstanceMode.BeforeAndAfterCall)> _
  Public Function SampleMethod(ByVal msg As String) As String Implements ISampleService.SampleMethod
    Console.WriteLine("The caller said: ""{0}""", msg)
    Console.WriteLine("For session {0}", OperationContext.Current.SessionId)
    Return "The service greets you: " & msg
  End Function

  Protected Overrides Sub Finalize()
    Console.WriteLine("Object {0} has been destroyed.", id)
    Console.WriteLine("For session {0}", session)
  End Sub
End Class

Opmerkingen

Gebruik de eigenschap ReleaseInstanceMode om op te geven wanneer Windows Communication Foundation (WCF) een serviceobject recyclet tijdens het uitvoeren van een methode. Het standaardgedrag is om een serviceobject te recyclen op basis van de InstanceContextMode waarde. Als u de ReleaseInstanceMode eigenschap instelt, wordt dit standaardgedrag gewijzigd.

Er ReleaseInstanceMode worden geen threadinggaranties geboden. Als u een nieuw, ongewijzigd object moet hebben wanneer uw service wordt uitgevoerd, stelt u de InstanceContextMode eigenschap in op PerCall.

In transactiescenario's wordt de ReleaseInstanceMode eigenschap vaak gebruikt om ervoor te zorgen dat oude gegevens die aan het serviceobject zijn gekoppeld, worden opgeschoond voordat een methode-aanroep wordt verwerkt. U kunt er ook voor zorgen dat serviceobjecten die aan transacties zijn gekoppeld, worden gerecycled nadat de transactie is voltooid door de ReleaseServiceInstanceOnTransactionComplete eigenschap in te stellen op true.

U kunt het volgende gedrag kiezen:

  • Een serviceobject recyclen voordat een bewerking wordt aangeroepen.

  • Een serviceobject recyclen nadat een bewerking is aangeroepen.

  • Recycle een serviceobject zowel vóór als nadat een bewerking is aangeroepen.

  • Geen recyclinggedrag.

U kunt ook OperationBehaviorAttribute een callbackcontractbewerking configureren in een duplex-clienttoepassing. Wanneer deze wordt gebruikt voor een callback-bewerking, moet de ReleaseInstanceMode eigenschap zijn None of wordt er tijdens runtime een InvalidOperationException uitzondering gegenereerd.

Bovendien is het belangrijk om te beseffen dat als de service wordt gemaakt door een serviceobject door te geven aan de ServiceHost.ServiceHost(Object, Uri[]) constructor, de waarde van deze eigenschap wordt behandeld alsof het .None

Van toepassing op