在发布这个问题之前,我搜索了所有论坛主题。我发现我的问题类似于Sending to authenticated queue但是该线程并没有真正回答我的问题。
我有以下设置(使用 .NET 应用程序和 MSMQ)
- 在我的 Windows7 64 位机器上安装了带有 Active Directory 服务集成模式的 MSMQ 。
- 我创建了两个私有队列(PQ1 和 PQ2)作为事务队列,并将其安全选项卡配置为提供对域用户 ID(域用户 ID,它也是 Win7 机器上的管理员)的完全访问权限。
- 在我的项目中,我有三个 .NET 4.0 应用程序,它们在这台 Windows 7 机器上由 Windows 服务托管(以相同域用户 ID 的访问权限运行)
- 第一个 .NET 应用程序在其自己的线程上运行,该线程从数据库读取数据并将 MSMQ 消息发送到 PQ1 队列
- 第二和第三个是从 Windows 服务自托管的 WCF 应用程序(例如 wcfA 和 wcfB)。
- wcfA 和 wcfB 为 MsmqIntegrationBinding 配置了传输安全模式,属性 mqAuthenticationMode 设置为“WindowsDomain”,msmqProtectionLevel 设置为“EncryptAndSign”
- wcfA 从 PQ1 获取消息,然后处理该消息并将另一条 MSMQ 消息发送到 PQ2
- wcfB 从 PQ2 获取消息并对其进行处理
请注意,在上述设置中一切正常。
但是,当我在其 General 选项卡上启用私有 Queues PQ1 和 PQ2 的“Authenticated”复选框时,问题就开始了。在此设置之后,第一个应用程序将 MSMQ 消息发送到专用队列,但它最终进入“事务死信消息”队列。我尝试将Authenticated Users组添加到队列安全选项卡并提供完全访问权限,但它不起作用。
除此之外,我还观察到进入死信队列的消息的“属性”页面上的“发件人”选项卡显示“已验证:否”
非常感谢您的帮助,以使应用程序与 Authenticated Queue 一起工作。