Aracılığıyla paylaş


OperationContractAttribute.IsInitiating Özellik

Tanım

Yöntemin sunucuda oturum başlatabilecek bir işlem uygulayıp uygulamadığını belirten bir değer alır veya ayarlar (böyle bir oturum varsa).

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

Özellik Değeri

Boolean

true işlemin sunucuda bir oturum başlatmasına izin verilirse, aksi takdirde , false. Varsayılan değer: true.

Örnekler

Aşağıdaki örnek, üç yöntem belirten bir hizmet sözleşmesi uygulayan bir hizmettir. Hizmet için bir oturum gerekir. Çağıranın ilk çağrısı dışında MethodOnebir işleme yönelikse, kanal reddedilir ve bir özel durum oluşur. Çağıran çağıran öğesini çağırarak MethodOnebir oturum başlattığında, çağıran herhangi bir zamanda çağrısı MethodThreeyaparak iletişim oturumunu sonlandırabilir. MethodTwo bir oturum sırasında herhangi bir sayıda çağrılabilir.

[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;  
  }  
}  

Açıklamalar

özelliği, IsInitiating oturum oluşturulduğunda bir işlemin çağrılan ilk işlem olup olmadığını denetler.

Not

değeri ServiceContractAttribute.SessionMode veya Allowed Required olmalıdır ve kullanılan bağlama özelliğin düzgün çalışması için IsInitiating oturumlar gerektirmelidir veya izin vermelidir.

Varsayılan değer olan true, bir işlemin kanalda çağrılan ilk işlem olabileceği anlamına gelir. Başlatma yöntemine yapılan sonraki çağrıların yöntemini çağırmak dışında hiçbir etkisi yoktur. Başka hiçbir oturum oluşturulmaz. Sözleşme oturumu kullanmazsa ayarı IsInitiating false yoksayılır.

Genellikle, istemciler bu yöntemi çağırmadan önce hizmette başka bir yöntemi çağırmaya zorlamak için olarak ayarlanır IsInitiating false . Örneğin, hizmetinizin sipariş kimliği numarasına bağlı bir dizi işlemi varsa, bir GetOrderId hizmet işlemi için olarak ayarlayabilir IsInitiating true ve kalan tüm hizmet işlemlerini olarak falseayarlayabilirsiniz. Bu, her yeni istemcinin hizmet tarafından kullanıma sunulan diğer yöntemleri kullanmadan önce bir sipariş kimliği almasını sağlar.

Not

ve Action özelliği arasında IsInitiating bir etkileşim vardır. Bir hizmet sözleşmesinin özelliği "*" olarak ayarlanmış tek bir hizmet işlemi Action olabilir. Bir hizmet sınıfının uyguladığı aynı dinleme URI'sinde barındırılan herhangi bir hizmet sözleşmesi grubu, özelliği olarak ayarlandığında falseözelliği "*" olarak ayarlanmış birçok hizmet işlemine Action IsInitiating sahip olabilir. Ancak, bu hizmet yöntemlerinden yalnızca birinin özelliği "*" ve IsInitiating özelliği olarak ayarlanmış trueolabilirAction.

Bir hizmet başlatılamayan bir işlem için bir ileti alırsa, hizmet bir ActionNotSupported SOAP hatası döndürür. İstemci bunu bir FaultExceptionolarak deneyimler. bir istemci önce başlatılmayan bir işlemi çağırırsa, istemci çalışma zamanı bir System.InvalidOperationExceptionoluşturur.

Daha fazla bilgi için bkz. Oturumları Kullanma.

Şunlara uygulanır