我正在使用网络中的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
答案 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)并删除代理复选框(自动检测设置等)。完成后,代码绕过代理并正常工作。