私のネットワーク内でC#プログラムを使用しており、Azure Service Busキューにメッセージを投稿できます。それらを受け取るとき、私はMessageReceiver.Receive()
の例外を得る。コードとエラーは以下の通りです。AzureサービスバスMessageReceiver Receive()Webソケットエラー
MessagingFactory factory = MessagingFactory.CreateFromConnectionString(QueueConnectionString);
//Receiving a message
MessageReceiver testQueueReceiver = factory.CreateMessageReceiver(QueueName);
using (BrokeredMessage retrievedMessage = testQueueReceiver.Receive(new TimeSpan(0, 0, 20)))
{
try
{
var message = new StreamReader(retrievedMessage.GetBody<Stream>(), Encoding.UTF8).ReadToEnd();
retrievedMessage.Complete();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
retrievedMessage.Abandon();
}
}
エラーが
testQueueReceiver.Receive(...);
で、サーバがアップグレード要求を拒否 'を使用して' 行にスローされます。 400このエンドポイントはWebソケットリクエストのみです
ファイアウォール/ポートの問題を示唆している1つの投稿を除き、Web上で何も見つかりません。私はすべての空白のサービスバスのポートをアウトバウンド(9350-9354、80、443)にオープンしていますが、9000がファイアウォールでブロックされている可能性があります。これらは必要ですか?どんな指針も大変ありがとう!あなたの代わりに、ポーリングのOnMessage
キューを使用しない理由
Service MessagingCommunication Exception - The End point is only for web socket requests
このコードはCRMプラグインの一部です。 CRMプラグインは、私が信じる2分のTTLしか持っていません。サブスクライブパターンには理想的ではありませんが、本質的にキューをポーリングする必要があります。私はしかし、あなたのメソッドを使用してまったく同じエラーを取得します。 – creatiive
あなたが言ったように、ポート9354はローカルに開きますが、ファイアウォールによってブロックされている可能性はまだあります。あなたはファイアウォールのポートを開こうとすることができますか? –
ファイアウォール経由で9354のアウトバウンドが許可されていますが、同じエラーでローカルに送信されます:-( – creatiive