繁体   English   中英

使用Authenticate复选框选中是否将消息发送到私有MSMQ队列?

[英]Sending message to private MSMQ queue with Authenticate checkbox checked?

在发布此问题之前,我搜索了所有论坛帖子。 我发现我的问题类似于发送到经过身份验证的队列但是该线程并没有真正回答我的问题。

我有以下设置(使用.NET应用程序和MSMQ)

  • 在我的Windows7 64位计算机上安装了具有Active Directory服务集成模式的MSMQ
  • 我创建了两个私有队列(PQ1和PQ2)作为事务性队列,并配置其安全选项卡以提供对域用户ID的完全访问权限(域用户ID,也是Win7机器上的Administartor)。
  • 在我的项目中,我有三个.NET 4.0应用程序,它们由Windows服务(在同一个域用户ID上运行,具有相同域用户ID的访问权限)托管在这台Windows 7机器上
  • 第一个.NET应用程序在其自己的线程上运行,该线程从数据库读取数据并将MSMQ消息发送到PQ1队列
  • 第二个和第三个是从Windows服务自托管的WCF应用程序(比如wcfA和wcfB)。
  • wcfA和wcfB配置为具有传输安全模式的MsmqIntegrationBinding,其中属性mqAuthenticationMode设置为“WindowsDomain”,msmqProtectionLevel设置为“EncryptAndSign”
  • wcfA从PQ1接收消息,然后处理该消息并向PQ2发送另一条MSMQ消息
  • wcfB从PQ2中获取消息并进行处理

请注意,在上面的设置中一切正常。

但是,当我在其常规选项卡上启用专用队列PQ1和PQ2的“已验证”复选框时,问题就开始了 在此设置之后,第一个应用程序将MSMQ消息发送到专用队列,但它最终在“事务死信消息”队列中。 我尝试将Authenticated Users组添加到Queue安全选项卡并提供完全访问权限,但它不起作用。

除此之外,我还观察到去死信队列的消息的Property页面上的Sender选项卡读取Authenticated:No

非常感谢您的帮助,使应用程序与Authenticated Queue一起使用。

初始化Message对象后,将UseAuthentication属性设置为true

将消息发送到经过身份验证的队列的示例:

private void SendToQueue(string queueMessage)
{
   var message = new System.Messaging.Message(queueMessage);
   message.UseDeadLetterQueue = true;            

   // This line resolved issue for sending message to queue with Authenticate checkbox checked. 
   message.UseAuthentication = true; 

   var queue = new System.Messaging.MessageQueue(@"FormatName:Direct=OS:.\private$\PQ1");
   queue.Send(message, MessageQueueTransactionType.Single);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM