2010-12-15 115 views
0

我有一个与MSMQ交谈的WCF服务。当我在VS2010的服务测试客户端界面中运行服务时,它可以将消息放置在适当的队列中,并且一切都很好。当我在IIS7中托管WCF服务并从我的Web应用程序调用服务时,所有消息都进入事务性死信队列。WCF和MSMQ在IIS问题中托管

我设置了应用程序池和站点(托管WCF服务的站点),我知道这些标识具有对队列的特定访问权限。

有什么我可以检查或我做错了吗?

更新: 嗯,我认为还有其他事情正在发生。我创建了一个超级简单的服务,可以读取队列中的数据并进行写入。我只是需要深入挖掘并找出答案。感谢所有拥有相貌的人,但我会保持这种态度,以便我可以回报,或者如果有人可能有其他想法。我知道很难确定没有查看任何代码,但很难发布,因为我有很多东西需要拆分。

+0

如果解释配置,这将有所帮助。例如,WCF托管机器的本地MSMQ?如果不是,哪个MSMQ有死信的消息? – 2010-12-15 21:15:21

+0

是的,WCF服务与MSMQ位于同一台机器上。我将事务性死信队列指定为消息正在发送的队列。队列被设置为非事务性的,并且消息被设置为非事务性的。 – DDiVita 2010-12-15 21:54:00

+0

在代码中用什么样的命名来命名队列?你可以张贴(掩盖真正的名字与一般的东西,但保持确切的格式)。对问题的描述表明队列被视为远程队列,MSMQ无法找到远程队列,从而在事务性的死信队列中传递消息。 – 2010-12-15 22:53:32

回答

0

结果发现编码队列的人没有正确设置队列。

0

在代码或客户端app.config文件中设置ExactlyOnce = false。

这样

NetMsmqBinding binding = new NetMsmqBinding(NetMsmqSecurityMode.None); 
binding.ExactlyOnce = false; 

希望这将解决这个问题。

干杯 Naushad