簡體   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