OperationBehaviorAttribute.ReleaseInstanceMode Eigenschap
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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