本文介绍了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和并发的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!