.net - 在选中验证复选框的情况下将消息发送到私有(private) MSMQ 队列?

标签 .net wcf msmq msmqintegrationbinding

在发布这个问题之前,我搜索了所有论坛主题。我发现我的问题类似于 Sending to authenticated queue但是,该线程并没有真正回答我的问题。

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

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

  • 请注意,在上述设置中一切正常。

    但是,当我在其常规选项卡 上为私有(private)队列 PQ1 和 PQ2 启用“已验证”复选框时,问题就开始了.在此设置之后,第一个应用程序将 MSMQ 消息发送到专用队列,但它最终进入“事务死信消息”队列。
    我尝试添加 认证用户组到队列安全选项卡并授予完全访问权限,但它不起作用。

    除此之外,我还观察到进入死信队列的消息的“属性”页面上的“发件人”选项卡显示为 。已认证:否

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

    最佳答案

    初始化 Message 后对象,设置UseAuthentication属性(property)给 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);
    }
    

    关于.net - 在选中验证复选框的情况下将消息发送到私有(private) MSMQ 队列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17104308/

    相关文章:

    c# - 具有身份的 Linq2db 插入未按预期工作

    c# - 如何以编程方式设置或清除 32BIT 标志?

    jquery - 使用 Jquery WCF REST Starter Kit Preview 2 进行跨域 Ajax 调用的问题

    wcf - 启用已存在的 MSMQ 队列的 WCF 读取

    .net-2.0 - .net 中的 MSMQ 作为服务

    .net - SignalR 中的多态性

    c# - 如何加速 C#/Linq 查询? [我不需要获取数据,我需要获取条件]

    jquery 调用我的 helloworld Web 服务

    wcf - 数据合约中未设置数据成员字段时如何不返回 null

    c# - 是否可以在该环境中使用 WCF(C#)?