我有一个使用WCF的netmsmqbinding的MSMQ应用程序。在默认配置中,并且启用了活动目录集成,一切正常。
但是,当我尝试关闭安全性时(使用netmsmqbinding的绑定配置),似乎接收到队列中的消息,即消息正在发布,因为我可以在队列的日志中看到它们,它们是不在队列本身或死信队列中,但没有调用相应的WCF操作。我没有看到任何异常或错误 - 就像消息被发送和读取一样,但WCF默默地忽略了这些消息。
有什么想法吗?
更新:当客户端和服务器应用程序位于同一主机上时,会发生这种情况。还要注意,消息实际上是从队列中删除的(即被接收),但是不调用实际的服务操作。我在日志队列中看到了消息,而不是实际的队列。
更新2:队列是事务性的。
更新3:追踪并未发现太多。在活动“Listen at net.msmq:// address-of-thequeue”中,我得到一个CommunicationException,“套接字连接已中止。这可能是由于处理消息时出错或远程超出接收超时造成的主机或基础网络资源问题。本地套接字超时为'00:00:09.9930000'。“
在活动“正在执行的操作上的处理操作”中,我得到一个InvalidOperationException,其中“在授权上下文中没有指定自定义主体。”
答案 0 :(得分:1)
您是否关闭了客户端和服务配置中的安全性?如果它们不匹配,则服务可能出错并将消息放回队列中(特别是如果您正在使用事务性队列)。
您是否尝试在服务上启用WCF tracing以查看内容是什么?