OperationContractAttribute.IsOneWay 屬性
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得或設定值,這個值會指出作業是否傳回回覆訊息。
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
屬性值
如果此方法接收要求訊息且不會傳回回覆訊息,則為 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
為 是取消建立和分派回應訊息的唯一方式。
單向方法不能有傳回值或擁有 ref
或 out
參數,否則會擲回 System.InvalidOperationException 例外狀況。
指定某個作業為單向作業,只是表示它沒有回應訊息。 若無法建立連線、傳出訊息過大,或該服務無法快速的讀取資訊,該作業仍可能封鎖。 若用戶端需要不會封鎖的呼叫,請產生 AsyncPattern 作業。 如需詳細資訊,請參閱使用 WCF 用戶端的單向服務和存取服務。