4

我们正在运行一些使用 Azure 服务总线中继通过 http 运行的长时间运行的测试应用程序,这些应用程序托管在 Windows 服务中,并且大多数情况下,这些应用程序可以正常运行 2-3 天。然而,每隔一段时间就会发生内部网络故障(例如防火墙重新启动),从而导致 Internet 连接中断。

此时,中继在 Azure 中被删除,我们的 Web 应用程序无法再与本地服务通信。

我原以为 Azure 中继客户端是容错的——如果它意识到它与 Azure 失去了连接,那么它将重新建立连接,并且如果它不能继续尝试,直到它可以......但它似乎不是这种情况。这似乎很基本......?

我只见过一次“System.ServiceModel.CommunicationException”服务无法在互联网上进行通信,那是客户端启动并首先尝试建立连接的时候。

是否有关于通过中继服务处理瞬时断开连接的任何建议或反馈(因为它是云-> 本地方向,因此客户端无法 AFAIK ping 服务器)。

4

2 回答 2

1

如果您仍然遇到问题,您可能需要联系 Azure 支持以了解断开连接的原因。如果现有连接发生问题,中继客户端应该重新连接。

当连接状态发生变化时,您可能希望将其添加ConnectionStatusBehavior到您ChannelFactory的输出中。它将包含导致其更改状态的错误。

var connectionStatusBehavior = new ConnectionStatusBehavior();
connectionStatusBehavior.Online += ConnectionStatusOnlineMethod;
connectionStatusBehavior.Offline += ConnectionStatusOfflineMethod;
channelFactory.Endpoint.Behaviors.Add(connectionStatusBehavior);
于 2014-09-03T17:36:28.103 回答
-1

Microsoft 在 Microsoft Azure Service Bus dll 的 2.6.5 版中解决了此问题。经过1个月的测试,它似乎工作。

于 2015-06-26T07:54:58.047 回答