2017-07-18 10 views
1

私は3台のマシンを持っています。それらをA、B(両方のサーバー)、Dev(私のローカルマシン)と呼んでみましょう。MSMQメッセージは配信されません - 一時停止すると発信に入ります

私はからB.

に私が持っている実際のC#コードをメッセージキューアイテムを送信するには、かなりシンプルで、正直、私は本当にそれがここでの問題ではないと思います。 (POSTされたオブジェクトを受け取り、それをキューに押し込むwebapiです)。

私はこれらのメッセージをDevからBに(ドメイン管理者アカウントにログインしている間)問題なく送信でき、メッセージの本文を検査できます。しかし、私はAからBへのメッセージを送信することはできません。Bのプライベートキューは、 "Everyone"が "フルコントロール"のアクセス許可を持つように設定されています。

Aの発信キューを一時停止してメッセージを送信すると、発信キューに入り、本文はまったく同じになりますが、再送信キューを再開すると受信は行われませんBの反対側。

私の人生で何が起こっているのか分かりません。私は 'TCP'メソッドを試しましたが、IPではなくマシン名でキューを参照する必要があります。

参考のため、メッセージを送信するために使用されるコードは次のとおりです。

キューにメッセージを送信するプロジェクトがWEBAPIた:参照して、この出くわす他の誰のために

using (var queue = new MessageQueue($"FormatName:Direct=OS:MachineB\\private$\\Queue")) 
      { 
       var queueItem = new QueueItem(); 
       queueItem.Object = this.postedObject; 

       var message = new System.Messaging.Message(queueItem); 
       queue.Send(message); 
      } 
+0

AとBの両方が同じドメインにありますか?また、Bのキューは、トランザクションキューか非トランザクションキューかですか? –

+0

@tomredfern両方が同じドメインにあり(Devとともに)、非トランザクションです。 – Seb

+0

両方のサーバーでMSMQのE2Eトレースを有効にします。 https://technet.microsoft.com/en-us/library/cc730882(v=ws.11).aspx。これは何が起こっているかを正確に伝えるはずです。 –

答えて

0

。 IISのAppPoolIdentityアカウントで実行されていました。受信キューにEveryoneアクセスが許可されていても、これらのメッセージは拒否されましたが、正常に終了しました。だからWebAPIはメッセージを発し、例外を投げず、アウトバウンドにぶつかりましたが、決して到着しませんでした。

アカウントをNetworkServiceに切り替えました。うまくいきました。

関連する問題