首页 文章

使用AMQP从Worker角色连接到Azure Service Bus

提问于
浏览
0

我正在尝试使用AMQP从我的工作者角色连接到我的Azure服务总线 . 但是,我有一个超时例外 . 当我使用网络嗅探器时,我发现它正在尝试使用端口5671与Azure服务总线进行通信 . 但是它没有发送ACK消息,它只是超时 . 我使用Azure模拟器从Visual Studio 2015中尝试此操作 .

当我尝试完全相同,从相同的计算机和网络接口,但然后从一个正常的命令提示应用程序(所以没有Azure工作者角色和/或模拟器),它的工作原理 . 我的应用程序能够向Azure发送ACK包并从Azure接收服务器Hello .

Azure模拟器或工作者角色是否默认阻止某些端口?为什么它从我的命令提示符应用程序工作,而不是从我的Azure工作者角色?我使用相同的连接字符串和以下代码:

TopicClient client = TopicClient.CreateFromConnectionString(_connectionstring, _queueName);
client.Send(new BrokeredMessage(msg));

2 回答

  • 1

    我终于找到了这个问题 . 在使用Azure模拟器的解决方案中,我包含以下包:

    <package id="WindowsAzure.ServiceBus" version="2.5.1.0" targetFramework="net451" />
    

    在我的控制台应用程序中,我使用了以下包:

    <package id="WindowsAzure.ServiceBus" version="3.0.9" targetFramework="net46" />
    

    因此,将我的Azure解决方案更改为3.0.9版解决了这个问题 . 似乎微软在版本3.x中引入了一个重大变化 .

  • 0

    根据可能性,我猜测问题是:

    • _connectionstring在VS与控制台应用程序中具有不同的值;可能是由于运行时使用的配置文件和/或您正在加载连接字符串 . 我建议在CreateFromConnectionString()中使用硬编码值重新测试您的测试以排除它 .

    • 有防火墙阻塞端口(Windows防火墙,企业网络等)

    • 有一个防病毒干扰流量

相关问题