我有一個WCF程序正在通過MSMQ進行通信。 出於某種原因,幾條消息正在多次處理,原因不明。沒有錯誤被拋出,我已經確認應用程序進入和退出operationBehaivior,沒有任何錯誤被拋出。多次處理WCF MSMQ消息
例如,我會通過MSMQ發送1個消息,應用程序將接受它,併成功地處理它,然後由於某種原因再次重新處理它(有時多次,時有時無後處理)
下面是有關行爲的,合同被定義爲:
[ServiceContract]
public interface IApp
{
[OperationContract(IsOneWay = true)]
void ProcessMessage(List<AppData> appInfo);
}
[ServiceBehavior(InstanceContextMode=InstanceContextMode.Single)]
public class ProcessInfo : IApp
{
[OperationBehavior(TransactionScopeRequired = true, TransactionAutoComplete = true)]
public void ProcessMessage(List<AppData> appInfo)
{
try
{
app logic
}
catch(Exception e)
{
}
}
看起來好像被多次處理的MSMQ消息有一箇中止計數> 0或放在重試隊列,但是,我從來沒有收到一個錯誤,爲什麼這發生。
任何想法,爲什麼會發生這將是非常感激。
事實證明,這是由於WCF綁定超時太短造成的。一旦我增加了客戶端和服務器的超時時間,它就開始工作。 我仍然困惑的一點是,在客戶端或服務器上沒有指出這個問題的錯誤。任何想法爲什麼這不會拋出一個錯誤? – Summit 2011-05-25 23:22:47