2011-03-30 59 views
0

我有一個wcf服務,它位於正在MSMQ隊列上偵聽的Windows 2003服務器上的Windows服務中。我在netmsmqbinding上設置ReceiveRetryCount = 2。該服務被設置爲使用事務([OperationBehavior(TransactionScopeRequired = true,TransactionAutoComplete = true)])。該服務運作良好。WCF MSMQ服務在使用事務處理時不會重試

我需要關閉因無法支持MSDTC的數據庫調用而導致的事務。所以我交換服務屬性以

[OperationBehavior(TransactionScopeRequired = false)] 

現在,當發生異常或故障被拋出,沒有重試發生時,該服務的故障處理程序永遠不會觸發。原始消息結束於系統DLQ。我希望故障處理程序在兩次重試後處理故障。有任何想法嗎?

回答

2

將事情改回原來的樣子。

圍繞數據庫調用,添加以下(代碼是從做內存 - 讓我知道,如果我需要解決這個問題了一下):

// using System.Transactions; 

using(var ts = new TransactionScope(TransactionScopeOption.Suppress)) 
{ 
    // Call DB stuff 
    ts.Complete(); 
} 
+0

謝謝了,這是對我的作品。 – trouta 2011-03-30 21:20:39