OperationBehaviorAttribute.ReleaseInstanceMode Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Získá nebo nastaví hodnotu, která označuje, kdy v průběhu vyvolání operace recyklovat objekt služby.
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
Hodnota vlastnosti
Jedna z ReleaseInstanceMode hodnot. Výchozí formát je None.
Výjimky
Hodnota není jednou z ReleaseInstanceMode hodnot.
Příklady
Následující příklad kódu ukazuje použití ReleaseInstanceMode k recyklaci objektů služby před i po volání.
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
Poznámky
ReleaseInstanceMode Vlastnost slouží k určení, kdy Windows Communication Foundation (WCF) recykluje objekt služby v průběhu provádění metody. Výchozím chováním je recyklace objektu služby podle InstanceContextMode hodnoty. ReleaseInstanceMode Nastavení vlastnosti změní výchozí chování.
Negarantuje ReleaseInstanceMode žádné vlákno. Pokud potřebujete mít nový, nemodifikovaný objekt při spuštění vaší služby, nastavte InstanceContextMode vlastnost na PerCall.
Ve scénářích transakcí se ReleaseInstanceMode vlastnost často používá k zajištění, že stará data přidružená k objektu služby se před zpracováním volání metody vyčistí. Můžete také zajistit, aby objekty služby přidružené k transakcím byly recyklovány po úspěšném dokončení transakce nastavením ReleaseServiceInstanceOnTransactionComplete vlastnosti na true
.
Můžete zvolit následující chování:
Před zavolání operace recyklujte objekt služby.
Recyklujte objekt služby po zavolání operace.
Recyklujte objekt služby před i po zavolání operace.
Žádné chování při recyklaci.
Můžete také použít OperationBehaviorAttribute ke konfiguraci operace zpětného volání kontraktu v duplexní klientské aplikaci. Při použití při operaci ReleaseInstanceMode zpětného volání musí None být vlastnost nebo InvalidOperationException je vyvolán výjimka za běhu.
Kromě toho je důležité si uvědomit, že pokud je služba vytvořena předáním objektu služby konstruktoru ServiceHost.ServiceHost(Object, Uri[]) , hodnota této vlastnosti je považována za None.