Azure 服务总线 MessageReceiver Receive() Web 套接字错误

Azure Service Bus MessageReceiver Receive() web sockets error

我正在我的网络中使用 c# 程序,并且能够 post 将消息发送到 Azure 服务总线队列。收到它们时,我在 MessageReceiver.Receive() 上遇到异常。代码和错误如下;

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();
    }
}

错误在

的 'using' 行抛出
testQueueReceiver.Receive(...);

The server rejected the upgrade request. 400 This endpoint is only for web-socket requests

我在网上找不到任何东西,只有一个 post 除外,这似乎表明它是防火墙/端口问题。我在本地打开了所有出站 azure 服务总线端口(9350-9354、80、443),但 9000 端口有可能在防火墙处被阻止。它应该需要这些吗?任何指针将不胜感激!

Service MessagingCommunication Exception - The End point is only for web socket requests

我只是想知道你为什么不使用 OnMessage 而不是轮询队列?

       var connectionString = "";
       var queueName = "samplequeue";

       var client = QueueClient.CreateFromConnectionString(connectionString, queueName);

       client.OnMessage(message =>
       {
         Console.WriteLine(String.Format("Message body: {0}", message.GetBody<String>()));
         Console.WriteLine(String.Format("Message id: {0}", message.MessageId));
         message.Complete()
       });

由于一些代理问题,此问题已修复。

代码 运行 所在的帐户是一个异步服务。我需要以该帐户登录,打开 IE 并转到连接 (LAN) 并删除代理复选框(自动检测设置等)。完成此操作后,代码绕过代理并正常运行。