私のDEVサーバーはWindows2008R2にMSMQがインストールされています。私のローカル開発マシンはWindowsXPで、MSMQもインストールされています。明らかに、それらは2つの異なるMSMQバージョンです。
私のコードには次のようなものがあります
MessageQueue queue = new MessageQueue(@"formatname:DIRECT=OS:MyDevServer\Private$\MyQueue", QueueAccessMode.Send);
Message message = new Message(value, new BinaryMessageFormatter());
queue.Send(message, MessageQueueTransactionType.Single);
queue.Close();
return message.Id;
メッセージを送信します。私の意図は、メッセージをDEVサーバーのプライベートキューに表示することです。
このキューをDEVサーバー上に作成し、次の権限を付与します
- 全員-権限を取得し、メッセージを送信する
- キューを作成するための私のドメインアカウント-私はすべてを行うことができます
- MyDevServer $-プロパティの取得、権限の取得、メッセージの送信
- 匿名ログオン-メッセージの送信
例外なくローカルでコードを実行でき、メッセージIDを取得することもできます。私のローカルWindowsXPのMSMQで、私はOutgoing Queue
-> DIRECT=OS:MyDevServer\Private$\MyQueue
->を持っていることがわかりQueue Messages
ます。新しいメッセージがこのキューに表示されます。しばらくすると、メッセージは消えます。しかし、DEVサーバーのキューのどこにも表示されません。
更新:「Win2008R2のMSMQは古いクライアントからのメッセージを受信しません」という投稿を見つけました。これで問題は解決しました。上記のコードは正しいですが、ターゲットホストがトラフィックをブロックしていました。