OperationBehaviorAttribute.ReleaseInstanceMode Properti
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mendapatkan atau menetapkan nilai yang menunjukkan kapan dalam pemanggilan operasi untuk mendaur ulang objek layanan.
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
Nilai Properti
Salah ReleaseInstanceMode satu nilai. Defaultnya adalah None.
Pengecualian
Nilai bukan salah ReleaseInstanceMode satu nilai.
Contoh
Contoh kode berikut menunjukkan penggunaan ReleaseInstanceMode untuk mendaur ulang objek layanan baik sebelum dan sesudah panggilan.
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
Keterangan
ReleaseInstanceMode Gunakan properti untuk menentukan kapan Windows Communication Foundation (WCF) mendaur ulang objek layanan selama menjalankan metode. Perilaku default adalah mendaur ulang objek layanan sesuai dengan InstanceContextMode nilai. ReleaseInstanceMode Mengatur perubahan properti yang perilaku defaultnya.
Tidak ReleaseInstanceMode membuat jaminan utas. Jika Anda harus memiliki objek baru yang tidak dimodifikasi saat layanan Anda berjalan, atur properti ke InstanceContextModePerCall.
Dalam skenario transaksi, ReleaseInstanceMode properti sering digunakan untuk memastikan bahwa data lama yang terkait dengan objek layanan dibersihkan sebelum memproses panggilan metode. Anda juga dapat memastikan bahwa objek layanan yang terkait dengan transaksi didaur ulang setelah transaksi berhasil diselesaikan dengan mengatur ReleaseServiceInstanceOnTransactionComplete properti ke true.
Anda dapat memilih perilaku berikut:
Daur ulang objek layanan sebelum operasi dipanggil.
Daur ulang objek layanan setelah operasi dipanggil.
Daur ulang objek layanan baik sebelum dan sesudah operasi dipanggil.
Tidak ada perilaku daur ulang.
Anda juga dapat menggunakan OperationBehaviorAttribute untuk mengonfigurasi operasi kontrak panggilan balik dalam aplikasi klien dupleks. Saat digunakan pada operasi panggilan balik, ReleaseInstanceMode properti harus None atau InvalidOperationException pengecualian dilemparkan pada runtime.
Selain itu, penting untuk menyadari bahwa jika layanan dibuat dengan meneruskan objek layanan ke ServiceHost.ServiceHost(Object, Uri[]) konstruktor, nilai properti ini diperlakukan seolah-olah Noneitu .