OperationContractAttribute.IsOneWay 屬性

定義

取得或設定值,這個值會指出作業是否傳回回覆訊息。

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

屬性值

Boolean

如果此方法接收要求訊息且不會傳回回覆訊息,則為 true,否則為 false。 預設為 false

範例

下列範例是一個實作服務合約的服務,此合約指定三個作業。 其中兩個方法實作雙向作業,不論其傳回值為何,它們都會傳回基礎回應訊息給呼叫者。 第三個方法實作一個接收呼叫的作業 (基礎傳入訊息),但不傳回基礎回應訊息。

[ServiceContract]  
public class OneAndTwoWay  
{  
  // The client waits until a response message appears.  
  [OperationContract]  
  public int MethodOne (int x, out int y)  
  {  
    y = 34;  
    return 0;  
  }  

  // The client waits until an empty response message appears.  
  [OperationContract]  
  public void MethodTwo (int x)  
  {  
    return;  
  }  

  // The client returns as soon as an outbound message  
  // is queued for dispatch to the service; no response  
  // message is generated or sent.  
  [OperationContract(IsOneWay=true)]  
  public void MethodThree (int x)  
  {  
    return;  
  }  
}  

備註

使用 IsOneWay 屬性表示某個作業不會傳回回覆訊息。 這種類型的作業對通知或事件型通訊很有用,尤其是雙向通訊。 由於呼叫者呼叫單向作業時,不會等待基礎回應訊息,因此呼叫者沒有直接的方式,可以偵測到處理要求訊息的失敗 (使用可靠通道與單向作業的服務應用程式,可在通道層級偵測到訊息傳遞失敗。 如需詳細資訊,請參閱 Reliable Sessions Overview.)

在雙工 (或雙向) 服務導向應用程式中,用戶端與伺服器彼此獨立地進行通訊,用戶端通道可在其方法上使用 IsOneWay 屬性,表示該服務可對用戶端進行單向呼叫,用戶端會把它視為事件。 不會產生傳回呼叫或訊息,因為該服務不期待任何回應訊息。

IsOneWay 屬性設為 false (預設值),那麼就算方法的傳回值為 void,一樣會產生回覆訊息。 在此情況下,基礎結構會建立並傳送空白訊息,向呼叫者指出方法已傳回 (使用此方法可讓基礎結構將 SOAP 錯誤傳回 client.) 設定 IsOneWay true 為 是取消建立和分派回應訊息的唯一方式。

單向方法不能有傳回值或擁有 refout 參數,否則會擲回 System.InvalidOperationException 例外狀況。

指定某個作業為單向作業,只是表示它沒有回應訊息。 若無法建立連線、傳出訊息過大,或該服務無法快速的讀取資訊,該作業仍可能封鎖。 若用戶端需要不會封鎖的呼叫,請產生 AsyncPattern 作業。 如需詳細資訊,請參閱使用 WCF 用戶端的單向服務和存取服務。

適用於