2011-08-08 23 views
8

私の問題はHow to receive message from a private workgroup queueと似ています(基本的には同じコードを使用しています)。MSMQの問題リモートプライベートキューの読み込み

私はqueue.send()およびキューを使用してデータを読み込む/

var queue = new MessageQueue(@"FormatName:DIRECT=TCP:xxx.xxx.xxx.xxx\PRIVATE$\MyNewPrivateQueue"); 

と書き込みをリモートマシン上のキューを開く

MessageQueue.Create(@".\Private$\MyNewPrivateQueue"); 

使用して、ホスト・マシン上のキューを作成しています。受信()

私は2つのシステムを試しています。

  1. Windows 7のホームプレミアムのx64
  2. のWindows XP SP3

私はW7システム上で専用キューを作成し、参照ごとにXPシステム(からキューを読み取り、書き込みしてみてください質問)、読み取り操作で「メッセージキューサービスが利用できません」という例外が発生して失敗します。

しかし、システムをリバースすると(XPシステムでキューを作成し、W7システムから読み書きし、同じコードを使用すると)、は期待どおりに動作します

私が通じてきました:

  1. Reading Messages from Remote Queues
  2. Understanding how MSMQ security blocks RPC traffic
  3. Getting MSMQ messages out of Windows Server 2008 remotely
  4. Clear the way - MSMQ coming through
  5. MSMQ 3.0 too secure for you?

私も試してみましたW7とXPのファイアウォールをオフにして、すべての人とその犬にキューのすべての権限を与えてもらっても無駄です。

キューホストとしてXPでは動作しますが、ホストとしてW7で動作するわけではありませんが、セキュリティ上の問題でありコードの問題ではないと思います。しかし私の人生では、W7のどこが詰まっているのかわかりません。

EDIT 8/9

OK ...私はリモート専用キューからメッセージを読み取ることができる

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ\Parameters\Security\AllowNonauthenticatedRPC 

を追加します。しかし、これは、利用可能なプライベートキューを列挙することを許容しないように思われる。それでこのアイデアはどんなアイディアですか?

答えて

6

[OK]私は明らかに私が読む必要があるすべてを読まなかった。答えがでました:、

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ\Parameters\Security\AllowNonauthenticatedRPC 

と私はW7サーバー上でこれをやったら1

に値を設定します。

MSMQ 4.0 - what's new in Computer Management?

私は、新しいレジストリキーを追加する必要がXPマシンからキューを読み取ることができました。

誰かがキューに書き込むことができるのは私が奇妙だと思う唯一の人ですが、これをキューから読み込むように設定しなければなりませんでしたか?それはとても奇妙です。

+3

いいえ、奇妙ではありません。キューとの間での送受信は、全く異なるネットワークプロトコルを使用します。 MSMQ(およびHTTP)プロトコルは、メッセージを送信/プッシュするためのものです。 RPCプロトコルは、メッセージを受信/プルするためのものです。これらのプロトコルは、本当にチョークとチーズであり、全く異なるトラブルスポットがあります。 –

+1

@ジョン.. OKは2つの異なるプロトコルを使用していることがわかります。これは読み書きのための異なる動作を意味するので、想像以上に奇妙ではありません。一方、全く異なる2つのプロトコル;-) –

+0

はい:-) MSMQは、インターネットが登場する前に、コーポレートLANのプッシュ技術として1990年代半ばに設計されました。 RPCは既に利用可能であったため、再構築する必要はありません。 MSMQが過去5〜10年で設計されていれば、それは非常に異なるでしょう。 –