我有一个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