Bagikan melalui


OperationBehaviorAttribute.ReleaseInstanceMode Properti

Definisi

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 .

Berlaku untuk