7

これについては他にも質問があることは知っていますが、実際にはこの質問には答えていません。

私が持っているコードは次のとおりです。

using (var mQ = new MessageQueue(qPath))
            {
                Console.WriteLine("machine: {0}, name : {1}, path : {2}", mQ.MachineName ,mQ.QueueName, mQ.Path);
                Console.WriteLine("message count : {0}",mQ.GetAllMessages().Count());
            }    

ローカル キューでGetAllMessages()を試すと、もちろんすべてが機能します。

string qPath = @".\private$\queueName";

ただし、コンピューター名だけで正常に ping できる同じドメインのリモート マシンでキューを試すと、次のエラーが発生します。

Invalid queue path name. at System.Messaging.MessageQueue.ResolveFormatNameFromQueuePath

私はもう試した:

string qPath = @"remoteMachineName\private$\queueName";
string qPath = @"remoteMachineName.qualified.net\private$\queueName";
string qPath = @"DIRECT=OS:remoteMachineName.qualified.net\private$\queueName";
string qPath = @"DIRECT=OS:remoteMachineName\private$\queueName";
string qPath = @"DIRECT=OS:ip.ad.re.ss\private$\queueName";
string qPath = @"DIRECT=TCP:ip.ad.re.ss\private$\queueName";

それらはすべて私に同じエラーを与えます。

Web のドキュメントには、完全な「パス」を知っていれば、プライベート キューを見つけることができると記載されています。

これは本当ですか?もしそうなら、どのようにフルパスをコンパイルしますか??

乾杯

4

3 に答える 3

1

例外は、何らかの理由でパス名を形式名に変換できないことを示しています。フォーマット名でキューを作成してみてください

http://msdn.microsoft.com/en-us/library/ch1d814t.aspx

たとえば、 Formatname:DIRECT=OS:ip.ad.re.ss\private$\queueName のように

乾杯ジョン

于 2011-05-05T01:09:46.813 に答える
0

ええ、FormatName がありません。例: "FormatName:Direct=OS:localhost\private$\messages"

于 2011-05-15T14:52:11.870 に答える
0

このページにアクセス

"FormatName:Direct=OS:machinename\\private$\\queue"
于 2011-05-15T13:52:54.263 に答える