有沒有辦法在wcf操作中知道事務已經提交?Wcf事務
好的,第二次嘗試是更具體。
我得到一個WCF服務與一個操作與交易流允許。
現在,當客戶端調用我的wcf服務時,它可以有一個事務。但是我的服務也對客戶交易成功的事實感興趣。因爲在我的wcf服務級別,如果一切順利的話。它還有其他的事情要做,但只有當所有的交易都已經提交時。......
有沒有像我可以訂閱的事件呢?
有沒有辦法在wcf操作中知道事務已經提交?Wcf事務
好的,第二次嘗試是更具體。
我得到一個WCF服務與一個操作與交易流允許。
現在,當客戶端調用我的wcf服務時,它可以有一個事務。但是我的服務也對客戶交易成功的事實感興趣。因爲在我的wcf服務級別,如果一切順利的話。它還有其他的事情要做,但只有當所有的交易都已經提交時。......
有沒有像我可以訂閱的事件呢?
這取決於服務本身以及您如何處理交易。如果您正在參與transactions in WCF through WS-Transaction,則如果客戶的呼叫成功無例外,則可以假定交易已經發生。
但是,如果這是在另一個事務的上下文中,那麼您無法確定事務是否經過直到包含事務完成。
即使您使用的是TransactionScope class,如果您的服務啓用了交易,您仍然必須考慮包含交易(如果有)。
您將不得不提供更多關於交易與呼叫相關的信息,以獲得更完整的答案。
有沒有像我可以訂閱的事件來獲得交易已經提交的通知? – pdiddy 2010-04-08 13:43:51
嘗試使用操作行爲屬性之上,在您的操作,讓TransactionFlow:
[OperationBehavior(TransactionScopeRequired=true)]
如果事務從客戶端流動,那麼該服務將使用它。
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)交易內幕交易
pdiddy我的男人!你厭倦了所有的歌唱和東西,並決定做一個WCF服務?尊重! – 2010-04-07 13:53:25
你能更具體嗎 – Dani 2010-04-07 13:55:59
你的問題甚至沒有韻。 – 2010-04-07 14:09:11