OperationBehaviorAttribute.ReleaseInstanceMode Tulajdonság
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Lekéri vagy beállítja azt az értéket, amely azt jelzi, hogy egy művelethívás során a szolgáltatásobjektum újrahasznosítása mikor történik.
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
Tulajdonság értéke
Az egyik ReleaseInstanceMode érték. Az alapértelmezett érték a None.
Kivételek
Az érték nem tartozik az ReleaseInstanceMode értékek közé.
Példák
Az alábbi példakód a szolgáltatásobjektumok hívás előtti és utáni újrahasznosítását ReleaseInstanceMode mutatja be.
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
Megjegyzések
A ReleaseInstanceMode tulajdonság használatával megadhatja, hogy Windows kommunikációs alaprendszer (WCF) mikor hasznosít újra egy szolgáltatásobjektumot a metódus végrehajtása során. Az alapértelmezett viselkedés egy szolgáltatásobjektum újrafeldolgozása az InstanceContextMode érték alapján. Az alapértelmezett viselkedést módosító ReleaseInstanceMode tulajdonság beállítása.
Ez ReleaseInstanceMode nem garantálja a szálkezelést. Ha a szolgáltatás futtatásakor új, nem módosított objektummal kell rendelkeznie, állítsa a tulajdonságot a InstanceContextMode következőre PerCall: .
Tranzakciós forgatókönyvekben a ReleaseInstanceMode tulajdonságot gyakran használják annak biztosítására, hogy a szolgáltatásobjektumhoz társított régi adatok törlődjenek a metódushívás feldolgozása előtt. Azt is ellenőrizheti, hogy a tranzakciókhoz társított szolgáltatásobjektumok újra lesznek-e hasznosítva a tranzakció sikeres befejezése után, ha a tulajdonságot a ReleaseServiceInstanceOnTransactionComplete következőre trueállítja.
A következő viselkedéseket választhatja:
A művelet meghívása előtt újrahasznosíthat egy szolgáltatásobjektumot.
Szolgáltatásobjektum újrahasznosítása egy művelet meghívása után.
A szolgáltatásobjektumok újrahasznosítása a művelet meghívása előtt és után is.
Nincs újrahasznosítási viselkedés.
A visszahívási szerződés műveletét kétoldalas ügyfélalkalmazásban is OperationBehaviorAttribute konfigurálhatja. Visszahívási művelet esetén a ReleaseInstanceMode tulajdonságnak kell lennie None , vagy InvalidOperationException futásidőben kivételt kell eredményeznie.
Emellett fontos felismerni, hogy ha a szolgáltatás egy szolgáltatásobjektum konstruktornak ServiceHost.ServiceHost(Object, Uri[]) való átadásával jön létre, a tulajdonság értéke úgy lesz kezelve, mintha az lenne None.