我正在使用网络中的c#程序,并且能够将消息发布到Azure服务总线队列。收到它们时,我会在MessageReceiver.Receive()
上遇到异常情况。代码和错误在下面;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();
}
}
误差会在
testQueueReceiver.Receive(...);
扔在 '使用' 线服务器拒绝升级请求。 400此端点仅适用于网络套接字请求
我在网上找不到任何东西,除了一个帖子似乎表明它是防火墙/端口问题。我在本地打开所有天蓝色的服务总线端口(9350-9354,80,443),但有可能9000端口在防火墙处被阻塞。它是否需要这些?任何指针将不胜感激!
Service MessagingCommunication Exception - The End point is only for web socket requests
此代码是CRM插件的一部分。我相信CRM插件只有2分钟的TTL。虽然它对于订阅模式并不理想,但我们必须基本轮询队列。但是,我确实使用你的方法得到了完全相同的错误。 – creatiive
就像你所说的那样,你在本地打开了9354端口,但仍然有机会被防火墙阻止。你可以尝试打开防火墙上的端口吗? –
我有9354出站允许通过防火墙和本地有相同的错误:-( – creatiive