本文介绍了NetMessagingBinding和并发的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

限时删除!!

当前,我们有一个带有NetMessagingBinding终结点的WCF服务,该服务似乎多次处理同一条消息.我们100%确保不会将同一则消息推送两次或多次.

服务设置如下:

公共类服务:IService
{
        公共无效推(MyType x)
        {
            var传入的属性= OperationContext.Current.IncomingMessageProperties;

            ReceiveContext receiveContext;
            如果(ReceiveContext.TryGet(incomingProperties,超出receiveContext))
            {
                尝试
                {
                    AddToDb(x);

                    receiveContext.Complete(TimeSpan.FromSeconds(ReceiveContextOperationTimeout));

                }
                抓住(前例外)
                {
                    receiveContext.Abandon(例如,TimeSpan.FromSeconds(ReceiveContextOperationTimeout));
                }
            }
            别的
            {
                字符串消息= string.Format(NoReceiveContextMessage,"blah");

                _logger.ErrorFormat(message);
                抛出新的InvalidOperationException(message);
            }
        }
} 

我们正在使用默认的并发模式.在MSDN中,它们是InstanceContextMode.PerSession和ConcurrencyMode.Single.

如果我们设置ConcurrencyMode.Single和InstanceContextMode.Single,则WCF服务不会处理消息多次.

我们可以在代码中修复某些问题吗?

预先感谢!

解决方案


这篇关于NetMessagingBinding和并发的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

1403页,肝出来的..

09-08 12:18