3

この質問を投稿する前に、すべてのフォーラム スレッドを検索しました。私の問題は認証済みキューへの送信に似ていることがわかりましたが、そのスレッドは私の質問に実際には答えていません。

次のセットアップがあります (.NET アプリケーションと MSMQ を使用)

  • Windows7 64 ビット マシンにActive Directory サービス統合モードで MSMQ をインストールしました。
  • トランザクション キューとして 2 つのプライベート キュー (PQ1 と PQ2) を作成し、ドメイン ユーザー ID (Win7 マシンの管理者でもあるドメイン ユーザー ID) にフル アクセスできるように [セキュリティ] タブを構成しました。
  • 私のプロジェクトでは、この Windows 7 マシン上の Windows サービス (同じドメイン ユーザー ID のアクセス権で実行) によってホストされている 3 つの .NET 4.0 アプリケーションがあります。
  • 最初の .NET アプリケーションは、データベースからデータを読み取り、MSMQ メッセージを PQ1 キューに送信する独自​​のスレッドで実行されます。
  • 2 番目と 3 番目は、Windows サービスから自己ホストされる WCF アプリケーション (wcfA と wcfB など) です。
  • wcfA と wcfB は、プロパティ mqAuthenticationMode が "WindowsDomain" に設定され、msmqProtectionLevel が "EncryptAndSign" に設定されたトランスポート セキュリティ モードで MsmqIntegrationBinding 用に構成されています。
  • wcfA は PQ1 からメッセージを取得し、メッセージを処理して別の MSMQ メッセージを PQ2 に送信します。
  • wcfB は PQ2 からメッセージを受け取り、それを処理します。

上記のセットアップですべてが正常に機能することに注意してください。

ただし、一般タブでプライベートキュー PQ1 および PQ2 の「認証済み」チェックボックスを有効にすると、問題が発生します。この設定の後、最初のアプリケーションは MSMQ メッセージをプライベート キューに送信しますが、最終的に「トランザクション配信不能メッセージ」キューに入ります。Authenticated Usersグループを Queue security タブに追加してフル アクセスを許可しようとしましたが、うまくいきませんでした。

これに加えて、配信不能キューに送られるメッセージの [プロパティ] ページの [送信者] タブに [認証済み: いいえ] と表示されていることも確認しました。

アプリケーションを Authenticated Queue で動作させるために、あなたの助けを大いに感謝します。

4

1 に答える 1

4

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);
}
于 2013-06-18T10:16:34.683 に答える