我正在尝试使用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 回答
我终于找到了这个问题 . 在使用Azure模拟器的解决方案中,我包含以下包:
在我的控制台应用程序中,我使用了以下包:
因此,将我的Azure解决方案更改为3.0.9版解决了这个问题 . 似乎微软在版本3.x中引入了一个重大变化 .
根据可能性,我猜测问题是:
_connectionstring在VS与控制台应用程序中具有不同的值;可能是由于运行时使用的配置文件和/或您正在加载连接字符串 . 我建议在CreateFromConnectionString()中使用硬编码值重新测试您的测试以排除它 .
有防火墙阻塞端口(Windows防火墙,企业网络等)
有一个防病毒干扰流量