MSMQ 通信を使用する WCF サービスがあります。ローカル ネットワークでサービスを実行すると、クライアント構成ファイルでサービス エンドポイントがホスト コンピューターを指すように構成されます。たとえば、サービス ホストで指定されたエンドポイントが次の場合です。
<endpoint address="net.msmq://localhost/private/MsmqService/MyMsmqService"
binding="netMsmqBinding" bindingConfiguration="test" contract="MsmqService.IMyMsmqService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
このエンドポイントにメッセージを送信するようにクライアントを構成します。
<endpoint address="net.msmq://192.168.1.5/private/MsmqService/MyMsmqService"
binding="netMsmqBinding" bindingConfiguration="test" contract="MsmqService.IMyMsmqService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
明らかに 192.168.1.5 はホスト コンピューターの IP であり、これは魅力的に機能します。私は IIS 7 でサービスをホストし、IIS で MSMQ リスナーを有効にし、適切なアクセス権を付与します ( Tom Hollanders の記事のほとんどすべて)。また、ブラウザーで http 経由でサービスにアクセスすることもできますが、私のクライアントを作成するときは、サービスは IIS でホストされ、クライアントApp.config
でエンドポイントを構成します。当然、クライアントを次のように構成します。
<endpoint address="net.msmq://ServiceHostPublicIP/private/MsmqService/MyMsmqService"
binding="netMsmqBinding" bindingConfiguration="test" contract="MsmqService.IMyMsmqService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
それは物事がうまくいかないところです。送信したメッセージは、クライアント マシンの送信キューに入れられ続けます。DIRECT=OS:[ServiceHostPublicIP]\private$\MsmqService\MyMsmqService
キューの状態は常に「接続待ち」です。キュー転送プロトコルを に設定しようとしました。SRMP
キュー名は IIS で必要なサービス名と同じで、キューに適切なアクセス許可を与えました。最近、この問題に遭遇した人はいますか? 何か案は?だれかが MSMQ over HTTP の実際のサンプルを共有できれば、それは素晴らしいことです。
どんな助けでも大歓迎です。前もって感謝します。