MSMQ読み取りエラー(アクセス拒否)

次のように、ローカルマシン上にキューを作成します。

MessageQueue.Create(@".\private$\sampleQueue");

私の読者のプロセスでは、次のように付け加えます:

var queue = new MessageQueue(@".\private$\sampleQueue");

queue.Peek()を実行しようとすると、アクセス拒否例外が発生します。私はドメインではない、これは私のローカルワークグループコンピュータです。何か案は?

1
私はこの状況に遭遇した。驚いたことに、コンピュータ管理ウィンドウを使用してキューの統計情報を読み込むと、もう一度正常に機能しました。
追加された 著者 Ron Klein,

3 答え

MSMQは、さまざまなプロトコルを使用して作業します。

  • 情報を送信する(メッセージを送信する)場合は、 MSMQ プロトコルが使用されます。
  • RPC プロトコルを使用して情報をプルする(メッセージの受信、プロパティの取得など)

単純な権限の問題ではない場合は、このブログ記事が必要です。

Understanding how MSMQ security blocks RPC traffic http://blogs.msdn.com/b/johnbreakwell/archive/2010/03/24/understanding-how-msmq-security-blocks-rpc-traffic.aspx

乾杯 ジョン

3
追加された

コンピュータの管理でキューを右クリックしてプロパティを選択すると、[セキュリティ]タブで適切なアクセス許可が設定されていますか?

2
追加された
まもなく確認しますが、キューを作成するプロセスもメッセージを送信できることに注意したいと思います。一方、リーダープロセスはWindowsサービスとして実行されています。
追加された 著者 gzak,

キューを作成するプロセスで使用される資格情報は、キューを読み取るために使用されたプロセスの資格情報と異なる必要があります。これが必要な場合は、作成した後にキューに必要な読み取りアクセス権を明示的に付与する必要があります。

2
追加された
私はキューの完全な許可を与えましたが、まだ何もしていないので、私はジョンが後で私に与えたリンクをチェックするつもりです。
追加された 著者 gzak,