Bagikan melalui


OperationContractAttribute.IsInitiating Properti

Definisi

Mendapatkan atau menetapkan nilai yang menunjukkan apakah metode menerapkan operasi yang dapat memulai sesi di server (jika sesi seperti itu ada).

public:
 property bool IsInitiating { bool get(); void set(bool value); };
public bool IsInitiating { get; set; }
member this.IsInitiating : bool with get, set
Public Property IsInitiating As Boolean

Nilai Properti

true jika operasi diizinkan untuk memulai sesi di server, jika tidak, false. Defaultnya adalah true.

Contoh

Contoh berikut adalah layanan yang mengimplementasikan kontrak layanan yang menentukan tiga metode. Layanan ini memerlukan sesi. Jika panggilan pertama penelepon adalah ke operasi apa pun selain MethodOne, saluran ditolak dan pengecualian dilemparkan. Ketika penelepon memulai sesi dengan memanggil MethodOne, pemanggil tersebut dapat mengakhiri sesi komunikasi kapan saja dengan memanggil MethodThree. MethodTwo dapat dipanggil beberapa kali selama sesi.

[ServiceContract(SessionMode=SessionMode.Required)]
public class InitializeAndTerminateService
{
  [OperationContract(
    IsOneWay=true,
    IsInitiating=true,
    IsTerminating=false
  )]
  public void MethodOne()
  {
    return;
  }

  [OperationContract(
    IsInitiating=false,
    IsTerminating=false
  )]
  public int MethodTwo(int x, out int y)
  {
    y = 34;
    return 0;
  }

  [OperationContract(
    IsOneWay=true,
    IsInitiating=false,
    IsTerminating=true
  )]
  public void MethodThree()
  {
    return;
  }
}

Keterangan

Properti IsInitiating mengontrol apakah operasi dapat menjadi operasi pertama yang dipanggil saat sesi dibuat.

Nota

Nilai ServiceContractAttribute.SessionMode harus berupa Allowed atau Required dan pengikatan yang digunakan harus memerlukan atau mengizinkan sesi agar IsInitiating properti berfungsi dengan baik.

Defaultnya adalah true, yang berarti bahwa operasi dapat menjadi operasi pertama yang dipanggil pada saluran. Panggilan berikutnya ke metode inisiasi tidak berpengaruh, selain memanggil metode . Tidak ada sesi lain yang dibuat. Jika kontrak tidak menggunakan sesi, pengaturan IsInitiating ke false diabaikan.

Biasanya, Anda mengatur IsInitiating ke untuk false memaksa klien untuk memanggil metode lain pada layanan sebelum mereka dapat memanggil metode ini. Misalnya, jika layanan Anda memiliki serangkaian operasi yang bergantung pada nomor ID pesanan, Anda dapat mengatur IsInitiating ke true untuk GetOrderId operasi layanan dan mengatur semua operasi layanan yang tersisa ke false. Ini memastikan bahwa setiap klien baru mendapatkan ID pesanan sebelum menggunakan metode lain yang diekspos oleh layanan.

Nota

Ada interaksi antara IsInitiating dan Action properti . Kontrak layanan hanya dapat memiliki satu operasi layanan dengan properti yang Action diatur ke "*". Setiap grup kontrak layanan yang dihosting di URI dengar yang sama dengan yang diterapkan kelas layanan dapat memiliki banyak operasi layanan dengan properti yang Action diatur ke "*" ketika IsInitiating properti diatur ke false. Namun, hanya salah satu metode layanan tersebut Action yang dapat mengatur properti ke "*" dan IsInitiating properti diatur ke true.

Jika layanan menerima pesan untuk operasi non-inisiasi, layanan mengembalikan kesalahan SOAP ActionNotSupported. Klien mengalami ini sebagai FaultException. Jika klien memanggil operasi non-inisiasi terlebih dahulu, runtime klien akan melempar System.InvalidOperationException.

Untuk informasi selengkapnya, lihat Menggunakan Sesi.

Berlaku untuk