Azure Service Bus MessageReceiver Receive()Web套接字错误

时间:2017-03-01 09:24:23

标签: c# azure azureservicebus

我正在使用网络中的c#程序,并且能够将消息发布到Azure Service Bus队列。收到它们后,我在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();
    }
}

错误会在

的“使用”行中抛出
testQueueReceiver.Receive(...);
  

服务器拒绝了升级请求。 400此端点仅用于Web套接字请求

除了一个似乎暗示它是防火墙/端口问题的帖子之外,我在网上找不到任何内容。我在本地打开了所有天蓝色服务总线端口(9350-9354,80,443),但有可能防火墙上的9000被阻止了。它需要这些吗?任何指针都将非常感谢!

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

2 个答案:

答案 0 :(得分:0)

我只是想知道为什么不使用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()
       });

答案 1 :(得分:0)

由于某些代理问题,这已得到修复。

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