2010-04-07 27 views
2

有沒有辦法在wcf操作中知道事務已經提交?Wcf事務

好的,第二次嘗試是更具體。

我得到一個WCF服務與一個操作與交易流允許。

現在,當客戶端調用我的wcf服務時,它可以有一個事務。但是我的服務也對客戶交易成功的事實感興趣。因爲在我的wcf服務級別,如果一切順利的話。它還有其他的事情要做,但只有當所有的交易都已經提交時。......

有沒有像我可以訂閱的事件呢?

+4

pdiddy我的男人!你厭倦了所有的歌唱和東西,並決定做一個WCF服務?尊重! – 2010-04-07 13:53:25

+0

你能更具體嗎 – Dani 2010-04-07 13:55:59

+2

你的問題甚至沒有韻。 – 2010-04-07 14:09:11

回答

2

這取決於服務本身以及您如何處理交易。如果您正在參與transactions in WCF through WS-Transaction,則如果客戶的呼叫成功無例外,則可以假定交易已經發生。

但是,如果這是在另一個事務的上下文中,那麼您無法確定事務是否經過直到包含事務完成。

即使您使用的是TransactionScope class,如果您的服務啓用了交易,您仍然必須考慮包含交易(如果有)。

您將不得不提供更多關於交易與呼叫相關的信息,以獲得更完整的答案。

+0

有沒有像我可以訂閱的事件來獲得交易已經提交的通知? – pdiddy 2010-04-08 13:43:51

0

嘗試使用操作行爲屬性之上,在您的操作,讓TransactionFlow:

[OperationBehavior(TransactionScopeRequired=true)] 

如果事務從客戶端流動,那麼該服務將使用它。

0
bool isTransactionComplete = true; 
try 
{ 
    using (TransactionScope trScope = new TransactionScope(TransactionScopeOption.Required)) 
    { 
     //some work 
     trScope.Complete(); 
    } 
} 
catch (TransactionAbortedException e) 
{ 
    //Transaction holder got exception from some service 
    //and canceled transaction 
    isTransactionComplete = false; 
} 
catch//other exception 
{ 
    isTransactionComplete = false; 
    throw; 
} 

if (isTransactionComplete) 
{ 
    //Success 
} 

由於casperOne寫它取決於設置。但是你應該知道複雜的交易像

1)會議服務和一個服務實例同時交易

2)交易內幕交易